Promise.all与RxJS Observables的行为?

在Angular 1.x中,我有时需要做出多个http请求,并对所有的响应进行处理。 我将所有的承诺放在一个数组中,并调用Promise.all(promises).then(function (results) {...})

Angular 2的最佳实践似乎指向使用RxJS的Observable来代替http请求中的承诺。 如果我有两个或更多不同的Observable从http请求创build,他们相当于Promise.all()

3 Solutions collect form web for “Promise.all与RxJS Observables的行为?”

模拟Promise.all的更直接的select是使用forkJoin操作符(它并行地启动所有可观察对象并join最后一个元素):

  • 文件
  • 相关链接:Cf. RxJS:concat三个承诺,区分结果

有点超出范围,但如果有帮助,关于链接承诺的主题,你可以使用一个简单的flatMap :Cf. RxJS承诺构成(传递数据)

forkJoin也能正常工作,但是我更喜欢combineLatest,因为你不需要担心它会把observables的最后一个值。 这样,只要有任何一个新的值发出(例如,你在间隔或某物上获取),你就可以得到更新。

在反应 x.io forkJoin实际上指向Zip ,为我做了这个工作:

 let subscription = Observable.zip(obs1, obs2, ...).subscribe(...); 
  • 如何获得RxJS Subject或Observable的当前值?
  • 如何在Angular2中取消订阅
  • Angular 2 beta.17:Property'map'在types'Observable <Response>'上不存在
  • RxJS中的“Scheduler”是什么?
  • Node.js数据stream与观测数据
  • Angular / RxJs什么时候应该退订订阅?
  • Angular 2 2.0.0-rc.1属性'map'在types'Observable <Response>'上不存在与问题报告不一样
  • 为什么我们需要使用flatMap?