簡體   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