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

angular2 - Best way to terminate a observable interval when path changes

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

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

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

最好的方法是什么?

在这种情况下,您可以取消订阅(订阅方法的 return 对象):

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

// to be called when the route changes
subscription.unsubscribe();

因为observable是冷的,不会有更多的订阅,observable将被释放...

您可以利用组件中的 "routerOnDesactivate" 钩子方法取消订阅。它是让您知道何时将路由组件留在路由上下文中的钩子。

有关详细信息,请参阅此 link:

解决这个问题的一个好方法是在变量中创建可观察对象并使用'| async' 管道订阅并在模板上显示值。然后取消订阅全部由管道处理。