Rxjs Observable按顺序运行并返回一个数组

Rxjs Observable按顺序运行并返回一个数组,rxjs,observable,Rxjs,Observable,并行运行可观察对象并返回一个数组 如何按顺序运行可观测项并返回数组。我不希望每个可观察对象都被调用,因此concat()不适合我 我希望收到与forkJoin相同的最终结果,但按顺序运行 它存在吗?或者我必须编码我自己的可观察模式吗?只需使用concat然后toArray: var arr = [obs1, obs2, obs3]; Observable.forkJoin(...arr).subscribe(function (observableItems) {}) 如果您需要行为,更类似于

并行运行可观察对象并返回一个数组

如何按顺序运行可观测项并返回数组。我不希望每个可观察对象都被调用,因此
concat()
不适合我

我希望收到与
forkJoin
相同的最终结果,但按顺序运行


它存在吗?或者我必须编码我自己的可观察模式吗?

只需使用
concat
然后
toArray

var arr = [obs1, obs2, obs3];
Observable.forkJoin(...arr).subscribe(function (observableItems) {})
如果您需要行为,更类似于
forkJoin
(仅从每个观察对象获取最后的结果),如@cartant在注释中所述:您需要在连接观察对象之前对其应用
last
运算符:

var arr = [obs1, obs2, obs3];
Observable.concat(...arr).toArray().subscribe(function (observableItems) {})

看来你在找合并。。。(即使它不返回数组)为什么concat不是一个选项您可以在连接结果上调用toArray。Concat不是一个选项,因为他希望它们在//中运行,Concat不会在//中运行它们。您需要对源观测值使用
last
操作符,因为
forkJoin
会发出obserfables的最终值数组,而
concat
会发出整个值流。是的,很好的一点-你是对的,行为有点不同。我将把这个添加到答案中。非常感谢。我可以扔掉我写的自定义订户/可观察模式@卡坦特得到了一些布朗尼点数。
Observable
  .concat(...arr.map(o => o.last()))
  .toArray()
  .subscribe(function (observableItems) {})