最佳答案
我把观察到的东西放到一个数组里,就像这样..。
var tasks$ = [];
tasks$.push(Observable.timer(1000));
tasks$.push(Observable.timer(3000));
tasks$.push(Observable.timer(10000));
我想要一个可观察的,当所有的任务 $已经完成时发出。请记住,在实践中,task $没有已知的 Observables 数量。
我试过 Observable.zip(tasks$).subscribe()
,但是在只有一个任务的情况下,它似乎失败了,这让我相信 ZIP 需要偶数个元素才能按照我预期的方式工作。
我已经尝试了 Observable.concat(tasks$).subscribe()
,但 concat 操作符的结果似乎只是一个可观察的数组... ... 例如,基本上与输入相同。你甚至不能打电话订阅它。
在 C # 中类似于 Task.WhenAll()
,在 ES6中类似于 Promise.all()
。
我遇到过一些 SO 问题,但它们似乎都涉及等待已知数量的流(例如,将它们映射到一起)。