Promise.all与RxJS Observables的行为?

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

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

  • TypeError:search.valueChanges.debounceTime不是一个函数
  • 如何获得RxJS Subject或Observable的当前值?
  • 什么是“回拨地狱”以及RX如何解决这个问题?
  • Angular 2 + Ionic 2:检测对象是否被修改
  • 如何closures外部点击下拉菜单?
  • Node.js数据stream与观测数据
  • Angular 2 2.0.0-rc.1属性'map'在types'Observable <Response>'上不存在与问题报告不一样
  • BehaviorSubject与Observable?
  • 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(...);