我有一个特定的情况,我使用RxJS间隔,但在任何给定时刻,我可能需要停止该间隔。我假设有一些像cancel()或stop()这样容易的东西。与clearTimeout类似。这可以在一段时间后停止一段时间吗?如果没有,那将是另一种方法。
基本上我有一个很大的阵列,我正在逐步完成。但是有些外部事情可能会发生,因此必须停止这一步并继续执行新任务。我希望我在文档中遗漏一些简单的东西。谢谢
答案 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
。