b2977053
2/28/2020 - 6:57 AM

RxJS Creation Operator withLatestFrom

// Operators - withLatestFrom
var main = Rx.Observable.from([1,2,3,4,5]).zip(Rx.Observable.interval(500), (x, y) => x);
var some = Rx.Observable.from([0,1,0,0,0,1]).zip(Rx.Observable.interval(300), (x, y) => x);

var example = main.withLatestFrom(some, (x, y) => {
    return y === 1 ? x*10 : x;
});

example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log('Error: ' + err); },
    complete: () => { console.log('complete'); }
});
//1
//2
//3
//40
//50
//complete
/*解釋:
在 withLatestFrom observable 有主從關係
從<--至少執行一次,主<--才會開始執行
之後互不等待,直到主 observable 丟出 complete。
*/