ตัวแปร "pipable" ปัจจุบันของตัวดำเนินการนี้เรียกว่าfinalize()
(ตั้งแต่ RxJS 6) มีการเรียกตัวดำเนินการ "patch" ที่เก่ากว่าและตอนนี้เลิกใช้แล้ว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: อัปเดตสำหรับ RxJS 6
finally()
วิธีนี้จะถูกต่อท้ายก่อนและการสมัครสมาชิกจำเป็นต้องบังคับให้ผ่าน / ไม่ผ่าน