Promise.all与RxJS Observables的行为?
在Angular 1.x中,我有时需要做出多个http
请求,并对所有的响应进行处理。 我将所有的承诺放在一个数组中,并调用Promise.all(promises).then(function (results) {...})
。
Angular 2的最佳实践似乎指向使用RxJS的Observable
来代替http
请求中的承诺。 如果我有两个或更多不同的Observable从http请求创build,他们相当于Promise.all()
?
模拟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(...);