繁体   English   中英

RxJS如何在可观察对象之间切换和暂停?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM