[英]RxJS How toggle and pause between observables?
嗨,我从RxJS开始,我有一个解决下一个问题的方法,但我不喜欢它,希望您能提供更好的解决方案:
假设我们有两个要切换的流:
然后,我们想在它们之间切换,但是当另一个发生事件并且暂停时,一个恢复。 例如,我们在成功时发出请求,我们执行超时,在完成时执行请求,在结束时执行超时,依此类推。
在我的解决方案中,我以一定间隔模拟了请求,并且使用了“ pausable()”,但是我不喜欢此解决方案的可伸缩性:
import Rx from 'rx';
const requestPauser = new Rx.Subject();
const requestStream = Rx.Observable.interval(500).pausable(requestPauser);
const intervalPauser = new Rx.Subject();
const intervalStream = Rx.Observable.interval(500).pausable(intervalPauser);
requestStream.subscribe(function(){
requestStream.pause();
intervalStream.resume();
console.log("request");
});
intervalStream.subscribe(function(){
requestStream.resume();
intervalStream.pause();
console.log("interval");
});
requestStream.resume();
RxJS专家将如何解决此问题?
您有问题的答案。 我建议switchMap http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-switchMap
requestStream.switchMap(()=>Rx.Observable.interval(500));
我不认为确实需要暂停。
更新
由于OP要求第二个可观察对象在第一个之后开始,因此应使用ConcatMap。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.