我有一个观察者,应该每隔X秒完成一次动作. X的值动态变化.我一直无法绕过如何在运行时动态更改此间隔.根据我的理解,我的想法中的一个重大突破是Observables一旦被定义就无法改变,所以尝试用新的区间值重新定义Observalbe似乎不是正确的方法.
我一直在尝试使用位于https://www.learnrxjs.io/operators/transformation/switchmap.html的代码
到目前为止,我认为switchMap至少在正确的轨道上.有人能够提供一个例子或指向我可能对我有用的资源吗?
至少,世界肯定需要更多的RxJs例子!
解决方法
您可以使用Subject以及switchMap和interval来动态控制周期.每当主题发出一个值时,该值可用于指定间隔的周期:
const t = Date.now(); let subject = new Rx.Subject(); subject .switchMap(period => Rx.Observable.interval(period)) .do(() => console.log('some action at time T+' + (Date.now() - t))) .take(8) .subscribe(); subject.next(50); setTimeout(() => subject.next(100),200); setTimeout(() => subject.next(200),400);
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>