我是Rxjs的新手,并写了一些例子以便更好地理解。但是,下面的例子让我感到困惑,为什么输出为0和1?有人可以解释一下吗?
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 :(得分:2)
switchMap
将放弃(取消订阅)先前发出的观察者。因此,最终您的值会延迟足够长的时间,以便您的计时器发出一个新值,为switchMap
创建一个新的Observable,以便在检索其值之前订阅放弃前一个。