Викликається поточний "прототипований" варіант цього оператора 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 року: оновлено для RxJS 6
finally()
метод додається спочатку, а підписка в обов'язковому порядку примушує проходити / провалюватися.