이 연산자의 현재 "파이프 가능한"변형이 호출됩니다 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 업데이트
finally()
메서드가 먼저 추가되고 구독이 반드시 통과 / 실패를 강제 한다는 점에서 Promises의 반대 패턴이라는 점이 흥미 롭습니다.