angular2 - 路径更改时终止可观察间隔的最佳方法

时间:2016-04-30 13:14:56

标签: typescript angular observable

我使用一个可观察的间隔在某个组件中每隔五秒执行一次某个功能,与路由配置中的路径相关。

Observable.interval(5000).subscribe(res => {
    // Something happens here
});

但是我希望在路径改变时终止间隔。现在它继续执行任务......

这样做的最佳方式是什么?

2 个答案:

答案 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并使用'|异步'管道订阅并在模板上显示值。然后取消订阅全部由管道处理。