如何在RxJS中停止Observable的间隔

时间:2017-10-26 20:44:16

标签: javascript rxjs observable rxjs5

我有一个特定的情况,我使用RxJS间隔,但在任何给定时刻,我可能需要停止该间隔。我假设有一些像cancel()或stop()这样容易的东西。与clearTimeout类似。这可以在一段时间后停止一段时间吗?如果没有,那将是另一种方法。

基本上我有一个很大的阵列,我正在逐步完成。但是有些外部事情可能会发生,因此必须停止这一步并继续执行新任务。我希望我在文档中遗漏一些简单的东西。谢谢

2 个答案:

答案 0 :(得分:19)

  

这可以在一段时间后停止一段时间吗?

当其他一些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>

答案 1 :(得分:7)

刚刚取消订阅:

const subscription = Observable.interval(1000)
  ...
  .subscribe()

...

subscription.unsubscribe();

请注意,您也可以在unsubscribe()的回调中调用subscribe