구독 시 최종 관찰 가능
이 조항에 의하면,onComplete
그리고.onError
의 기능subscribe
상호 배타적입니다
둘중에 하나라는 뜻onError
아니면onComplete
사건들은 내 안에서 불붙을 것입니다.subscribe
.
오류가 발생하든, 정보의 스팀을 성공적으로 완료하든 실행해야 하는 논리 블록이 있습니다.
파이썬 같은 것을 찾아봤지만, 제가 만든 관측 자료에 첨부해야 하는 것만 발견했습니다.
하지만 저는 그 논리를 구독할 때와 스트림이 종료된 후에만 하고 싶습니다. 성공적이든 오류가 있든 말든 말입니다.
무슨 생각 있어요?
이 연산자의 현재 "파이프블" 변형을 다음과 같이 부릅니다.finalize()
(RxJS 6 이후).더 오래되고 지금은 사용되지 않는 "패치" 연산자가 호출되었습니다.finally()
(RxJS 5.5까지).
생각합니다finalize()
연산자가 실제로 정확합니다.당신은 이렇게 말합니다.
내가 구독하고 스트림이 종료된 후에만 그 논리를 수행합니다.
그건 문제가 아니라고 생각합니다.당신은 싱글을 가질 수 있습니다.source
사용.finalize()
구독하기 전에 필요한 정보를 선택할 수 있습니다.이렇게 하면 항상 사용할 필요가 없습니다.finalize()
:
let source = new Observable(observer => {
observer.next(1);
observer.error('error message');
observer.next(3);
observer.complete();
}).pipe(
publish(),
);
source.pipe(
finalize(() => console.log('Finally callback')),
).subscribe(
value => console.log('#1 Next:', value),
error => console.log('#1 Error:', error),
() => console.log('#1 Complete')
);
source.subscribe(
value => console.log('#2 Next:', value),
error => console.log('#2 Error:', error),
() => console.log('#2 Complete')
);
source.connect();
콘솔로 인쇄:
#1 Next: 1
#2 Next: 1
#1 Error: error message
Finally callback
#2 Error: error message
2019년 1월: RxJS 6용 업데이트
저한테 딱 맞는 건 이거에요.
fetchData()
.subscribe(
(data) => {
//Called when success
},
(error) => {
//Called when error
}
).add(() => {
//Called when operation is complete (both success and error)
});
저는 지금 Angular 애플리케이션에서 RxJS 5.5.7을 사용하고 있고 사용하고 있습니다.finalize
오퍼레이터는 성공 또는 오류 콜백 전에 해고되기 때문에 내 사용 사례에 대해 이상한 행동을 합니다.
간단한 예:
// Simulate an AJAX callback...
of(null)
.pipe(
delay(2000),
finalize(() => {
// Do some work after complete...
console.log('Finalize method executed before "Data available" (or error thrown)');
})
)
.subscribe(
response => {
console.log('Data available.');
},
err => {
console.error(err);
}
);
사용해야 했습니다.add
내가 원하는 것을 달성하기 위해 구독 신청을 합니다.기본적으로 a.finally
성공 또는 오류 콜백이 완료된 후 콜백합니다.좋아해를try..catch..finally
막아서거나Promise.finally
방법.
간단한 예:
// Simulate an AJAX callback...
of(null)
.pipe(
delay(2000)
)
.subscribe(
response => {
console.log('Data available.');
},
err => {
console.error(err);
}
)
.add(() => {
// Do some work after complete...
console.log('At this point the success or error callbacks has been completed.');
});
언급URL : https://stackoverflow.com/questions/40707379/observable-finally-on-subscribe
'source' 카테고리의 다른 글
MariaDB: Select the fields from one column in one table that are not in a subset of another column from another table (0) | 2023.10.23 |
---|---|
Oracle의 동적 테이블 파티셔닝 (0) | 2023.10.23 |
PoolableConnectionFactory를 만들 수 없습니다(Io 예외:네트워크 어댑터가 연결을 설정할 수 없음) (0) | 2023.10.23 |
액세스 권한에 의해 금지된 방식으로 소켓에 액세스하려고 시도했습니다. (0) | 2023.10.23 |
Linux 정적 라이브러리에서 기호 제한 (0) | 2023.10.23 |