2017-08-23 27 views
0

我是Rxjs的新手,並且爲了更好的理解寫了一些例子。然而,下面的例子讓我困惑,爲什麼輸出是0和1?有人可以解釋嗎?Rxjs operator 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)); 

在additon:

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