RxJS 检测订阅何时关闭
RxJS Detect When Subscription has Closed
有没有办法检测订阅何时关闭?我有一个加载组件,当订阅存在 && 未关闭时显示加载消息,否则显示内容,但一旦关闭我想重置引用订阅的变量,否则我不能使用 mySubscription.closed
作为模板中的有用指示。
是的,根据 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');
});
subscribe()
方法接受三个函数作为参数(arguments)。关闭订阅时调用作为最后一个参数提供的函数。
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')
);
其他几个选项。
tap()
and finalize()
这两个运算符都放在 pipe(...)
中 - 因此逻辑独立于 subscribe(...)
调用运行,您甚至可能无法控制。
finalize()
is called on completion
OR error
tap()
has three parameters next
, error
, and complete
that are called on those conditions
Finalize 应该保留用于真正的清理类型任务。
有没有办法检测订阅何时关闭?我有一个加载组件,当订阅存在 && 未关闭时显示加载消息,否则显示内容,但一旦关闭我想重置引用订阅的变量,否则我不能使用 mySubscription.closed
作为模板中的有用指示。
是的,根据 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');
});
subscribe()
方法接受三个函数作为参数(arguments)。关闭订阅时调用作为最后一个参数提供的函数。
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')
);
其他几个选项。
tap()
and finalize()
这两个运算符都放在 pipe(...)
中 - 因此逻辑独立于 subscribe(...)
调用运行,您甚至可能无法控制。
finalize()
is called oncompletion
ORerror
tap()
has three parametersnext
,error
, andcomplete
that are called on those conditions
Finalize 应该保留用于真正的清理类型任务。