combineLatest
有一个说明一切的名字:操作符将两个或多个可观察对象的最新值组合成一个可观察对象。
这张大理石图完美地说明了这种行为(点击图片可以访问交互式版本):

该操作符有几种可能的用例。最常见的用法是通过组合不同的源来过滤信息,如下图所示RxJs和Angular表单的动态过滤教程,它实现了相当于自动补全文本输入的功能,每当用户输入新字符时,就会显示新的建议。
我们得到了什么combineLatest
由组合的可观察对象发出的所有最新值组成的数组。例如,如果我们订阅组合最新(obs1, obs2, obs3)
,我们得到的数据是一个数组,包含[lastValueFromObs1, lastValueFromObs2, lastValueFromObs3]
.数组中数据的顺序与传递可观察对象的顺序相匹配combineLatest
,该数组的值将再次发射,每当其中一个可观察对象再次发射。
一个常见的陷阱combineLatest
操作符是否等待所有可观察的源至少发出一个值才返回某个值,因此将它与startWith
操作符,如这个例子来自我们之前的教程.
注意:操作符将被重命名为combineLatestWith
在RxJs 8+.