我有一个 Observable,它应该每 X 秒完成一个 Action 。 X 的值动态变化。我一直无法思考如何在运行时即时更改此间隔。据我所知,我认为 Observable 的一个重大突破是定义后就不能更改,因此尝试使用新的间隔值重新定义 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>
关于javascript - rxjs 可观察到的变化间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079800/