我正在使用可觀察的時間間隔在特定組件內每隔五秒鐘執行一次某個函數,這與我的路由配置中的路徑有關。angular2 - 在路徑更改時終止可觀察間隔的最佳方法
Observable.interval(5000).subscribe(res => {
// Something happens here
});
但是我想在路徑改變時終止間隔。現在它只是繼續執行任務...
這樣做的最佳方法是什麼?
我正在使用可觀察的時間間隔在特定組件內每隔五秒鐘執行一次某個函數,這與我的路由配置中的路徑有關。angular2 - 在路徑更改時終止可觀察間隔的最佳方法
Observable.interval(5000).subscribe(res => {
// Something happens here
});
但是我想在路徑改變時終止間隔。現在它只是繼續執行任務...
這樣做的最佳方法是什麼?
你可以從你在這種情況下,申購(認購該方法的返回對象)退訂:
var subscription = Observable.interval(5000).subscribe(res => {
// Something happens here
});
// to be called when the route changes
subscription.unsubscribe();
因爲觀察到的是冷的,會有沒有更多的認購,可觀察到的將被配置...
您可以利用組件中的「routerOnDesactivate」鉤子方法來取消訂閱。當您將路由組件留在路由上下文中時,它是讓您知道的鉤子。
請參閱此鏈接瞭解詳情:
解決這個一個偉大的方式是創建可觀測的變量,並使用「|異步'管道來訂閱並顯示模板上的值。取消訂閱然後全部由管道照顧。
這看起來很公平,但我怎麼知道組件內的路由何時更改? –
您可以利用組件中的routerOnDesactivate掛鉤方法來取消訂閱。我更新了我的答案。 –