任一可观察到的更新时触发代码

时间:2018-12-07 01:51:43

标签: angular rxjs observable

我从行为主体生成的状态服务上有几个可观察到的东西:

_state.sortModels$.subscribe(sortModels => {
    //do stuf
});

_state.filterModel$.subscribe(filterModel => {
    //do stuff
});

我希望有一些可观察到的更新时执行的代码。因此,例如,如果sortModels更新,它将触发订阅并使用filterModel的先前版本,反之亦然。

类似的东西:

.subscribe((filterModel, sortModels) => {
    someMethod(filterModel, sortModels);
});

对于这个用例,我发现RXJS文档很难解释,因为在所有示例中,它都是计时器输出一个数字,而不是不同的对象。

在我的容器组件中,我如何合并两个可观察对象,以便如果其中一个更新可以同时触发两个值?

1 个答案:

答案 0 :(得分:1)

combineLatest正是您所需要的

  

组合多个Observable创建一个Observable,其值是根据其每个输入Observable的最新值计算的。

combineLatest(_state.sortModels$,_state.filterModel$)
    .subscribe(([sortModels,filterModel])=>{
        someMethod(filterModel, sortModels);
    })