簡體   English   中英

如何在RxJS中停止Observable的間隔

[英]How to stop an interval on an Observable in RxJS

我有一個特定的情況,我正在使用RxJS間隔,但在任何給定的時刻,我可能需要停止該間隔。 我假設有一些像cancel()或stop()這樣容易的東西。 與clearTimeout類似。 這可以在一段時間后停止一段時間嗎? 如果沒有,那將是另一種方法。

基本上我有一個大型陣列,我正在逐步完成。 但是有些外部事情可能會發生,因此必須停止這一步並繼續執行新任務。 我希望這些東西很簡單,我只是在文檔中遺漏了。 謝謝

這可以在一段時間后停止一段時間嗎?

當其他一些observable發出時,您可以使用.takeUntil運算符來完成一個observable。 您當然需要將其他可觀察對象設置為以對您有用的方式發出值,但這是一個在5秒后停止間隔的示例:

 Rx.Observable.interval(100) .takeUntil(Rx.Observable.timer(5000)) .subscribe(val => console.log(val)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script> 

只需取消訂閱:

import { interval } from 'rxjs';

const subscription = interval(1000)
  .pipe(...)
  .subscribe();

...

subscription.unsubscribe();

請注意,由於interval()是異步的,因此您也可以在subscribe的回調中調用unsubscribe()

2019年7月:更新了RxJS 6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM