この演算子の現在の「pipable」バリアントが呼び出されます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()
メソッドが最初に追加され、サブスクリプションが強制的にパス/フェイルを強制するという点で興味深いです。