有没有办法检测订阅何时关闭?我有一个加载组件,当订阅存在时显示加载消息&&没有关闭,否则显示内容,但一旦关闭,我想重置引用订阅的变量,否则我不能在模板中使用mySubscription.closed
作为有用的指示。
答案 0 :(得分:3)
是的,基于RxJS subscribe() documentation,有3个参数可以传递,最后一个是OnCompleted回调。
var observer = Rx.Observer.create(
function (x) {
console.log('Next: %s', x);
},
function (err) {
console.log('Error: %s', err);
},
function () {
console.log('Completed');
});
答案 1 :(得分:1)
subscribe()
方法接受三个函数作为参数(参数)。订阅关闭时,将调用作为最后一个参数提供的函数。
YourObservable.subscribe(
value => console.log('This is called every time when observable emits'),
error => console.log('This is called when error occurs'),
() => console.log('This is called when subscription closed')
);
答案 2 :(得分:1)
另外两个选择。
tap()
和finalize()
这两个都是您放在pipe(...)
中的运算符-因此逻辑独立于subscribe(...)
调用而运行,您甚至可能不在控制之内。
在completion
或error
上调用
tap()
具有在这些条件下调用的三个参数next
,error
和complete
最终确定可能应该保留给真正的清理类型任务。