【发布时间】:2016-10-02 21:46:52
【问题描述】:
由于在 Angular 2 中两次不同的 $http 调用,我有两个 Observables。
现在,我想要一个组合的 Observable...
- 当两个源 Observable 之一“触发”时“触发”(竞争情况)。
- 当两个(或所有)Observables“触发”(所有情况)时“触发”。
如何解决这个问题?
【问题讨论】:
由于在 Angular 2 中两次不同的 $http 调用,我有两个 Observables。
现在,我想要一个组合的 Observable...
如何解决这个问题?
【问题讨论】:
RxJS 有操作员来完成这两项任务。正如您提到的 Angular 2,我指的是 RxJS 版本 5。对于 RxJS 版本 4,运算符的名称不同。
对于比赛任务,有一个 RxJS 运算符 race 与 Promise.race 行为一致。在版本 4 中,操作员被称为amb。当从 promises 切换到 observables 时,请注意在 observable 的情况下可能有不止一项。这意味着首先发出项目的 observable 将获胜,并且您将收到从此 observable 发出的所有项目,直到它完成。
对于您希望等待所有可观察对象发出一个值的用例,您可以使用combineLatest 运算符。您需要传递一些关于如何组合发出的事件的函数,这可能是返回给定的数组或将数组项合并到一个对象中。
【讨论】: