我使用一个可观察的间隔在某个组件中每隔五秒执行一次某个功能,与路由配置中的路径相关。
Observable.interval(5000).subscribe(res => {
// Something happens here
});
但是我希望在路径改变时终止间隔。现在它继续执行任务......
这样做的最佳方式是什么?
答案 0 :(得分:7)
在这种情况下,您可以取消订阅订阅(订阅方法的返回对象):
var subscription = Observable.interval(5000).subscribe(res => {
// Something happens here
});
// to be called when the route changes
subscription.unsubscribe();
因为观察是冷的并且没有更多的订阅,所以可观察的将被处理......
您可以利用组件中的“routerOnDesactivate”挂钩方法取消订阅。当您将路由组件留在路由上下文中时,它会让您知道。
有关详细信息,请参阅此链接:
答案 1 :(得分:0)
解决这个问题的一个好方法是在变量中创建observable并使用'|异步'管道订阅并在模板上显示值。然后取消订阅全部由管道处理。