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 source
ve 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 .