Bu operatörün mevcut "borulabilir" varyantı denir finalize()(RxJS 6'dan beri). Daha eski ve artık kullanılmayan "yama" operatörü çağrıldı finally()(RxJS 5.5'e kadar).
finalize()Operatörün aslında doğru olduğunu düşünüyorum . Diyorsun:
bu mantığı yalnızca abone olduğumda ve yayın bittikten sonra yap
bence bu bir sorun değil. İsterseniz abone olmadan önce bir single alabilir sourceve kullanabilirsiniz finalize(). Bu şekilde her zaman kullanmanız gerekmez 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();
Bu, konsola yazdırır:
#1 Next: 1
#2 Next: 1
#1 Error: error message
Finally callback
#2 Error: error message
Oca 2019: RxJS 6 için güncellendi
finally()Metodun önce eklenmesi ve aboneliğin zorunlu olarak başarılı / başarısız olması nedeniyle Promises'in zıt modeli olması ilginçtir .