こんにちは、私はRxJSを始めていると私は次の問題の解決策を持っているが、私はそれを好きではない、あなたがよりよい解決策を提供することを願って:RxJSオブザーバブルの切り替え方法と一時停止方法は?
:は、我々は切り替えたい2つのストリームを持っている想像してみて
- 要求
- タイムアウト
その後、我々はそれらを切り替えるしたいのですが、一つは、他のイベントがあるとき再開され、これが一時停止されています。例えば。私たちは成功するとリクエストを行い、タイムアウトを行い、リクエストが完了したら、タイムアウトが終了したときなどを行います。
は、私の解決策では、私は間隔で要求をシミュレートし、私は「)(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の専門家は、この問題を解決する方法?
ありがとうSuraj、これで私は遅延がありますが、どのようにして両方を繰り返すループを作成できますか? const responseStream = Rx.Observable.fromPromise($ .getJSON( 'https://api.github.com/users')); responseStream.subscribe(()=> {console.log(1);}); responseStream.switchMap(()Rx.Observable.just(2).delay(500))subscribe(()=> { console.log(2); }); –
申し訳ありませんが、これは間違っていました。なぜなら、2回目の購読は開始から実行され、1回目の購読が終了すると実行されなければならないからです。 –
ok ..私の悪い..もっとよく見ていたはずです。 –