2017-08-23 6 views
0

私はRxjsで新しく、理解を深めるためのいくつかの例を書いています。しかし、以下の例では私が混乱して、出力が0と1の理由は何ですか?誰か説明できますか? additonでRxjsオペレータswitchMap

var sources = Rx.Observable.timer(1000,1000); 
var higherOrder = sources.switchMap(val => Rx.Observable.of(val).delay(1000*val)); 
higherOrder.subscribe(x => console.log(x)); 

:出力である

var sources = Rx.Observable.timer(1000,1000); 
var higherOrder = sources.switchMap(val => Rx.Observable.of(val)); 
higherOrder.subscribe(x => console.log(x)); 

:0 1 2 3 4 5 ...

+0

あなたは何を理解していませんか?期待どおりの出力? – martin

答えて

2

switchMapは(解除)新しいものが到着した後観察放出された以前に放棄されます。だから最終的にあなたの値はあなたのタイマーが新しい値を放出するのに十分なほど遅くなり、あなたのswitchMapのために新しいObservableを作成し、その値を取り出す前に前のものを放棄することに加入します。

+0

ありがとうございました。わかった – zhou

関連する問題