Rxjs - Operators - CombineLatest

Signature

export declare function combineLatest<T, R>(
...observables: Array<ObservableInput<any> |
Array<ObservableInput<any>> |
((...values: Array<any>) => R)>): Observable<R>;

接受多个流,也可以接受flat出来的流,甚至是一个数组

多个数据流里最后那个值和其他流当前最新的值进行组合操作
如果是数组,自然最新的值就是最后那个.如果of默认是同步的.所以前面的流直接走到最后那个值才会和下面的流组合

这里例子里的把Scheduler变成异步的了,所以会多次匹配

Example

var weight = Rx.Observable.of(70, 72, 76, 79, 75,Rx.Scheduler.asap);
// var height = Rx.Observable.of(1.76, 1.77, 1.78,Rx.Scheduler.asap);
var height = [1,3,4,5,6,7,];
var bmi = Rx.Observable.combineLatest(weight, height, (w, h) => w+h);
bmi.subscribe(x => console.log('BMI is ' + x),
()=>{},
()=>console.log("com"));

打开注释,注释掉数据:

BMI is 71.76
BMI is 73.76
BMI is 73.77
BMI is 77.77
BMI is 77.78
BMI is 80.78
BMI is 76.78
com

所有参数流都结束的时候combineLatest 才结束

想象场景:
一个结果流失根据多个流的数据来组合的, 并且 根据的是每个子流的最新数据更新