Rxjs Observable按顺序运行并返回一个数组 [英] Rxjs Observable run sequentially and return an array
问题描述
var arr = [obs1, obs2, obs3];
Observable.forkJoin(...arr).subscribe(function (observableItems) {})
并行运行可观察对象并返回一个数组.
Runs observables in parallel and return an array.
如何依次运行可观察对象 ,并返回一个数组.我不想被每个可观察对象调用,所以concat()
不适合我.
How can I run the observables sequentially and return an array. I do not want to get called for each observable, so concat()
is not appropriate for me.
我希望获得与forkJoin
相同的最终结果,但是要按顺序运行.
I want to receive the same final result as forkJoin
but run sequentially.
它存在吗?还是我必须编写自己的可观察模式?
Does it exist? or do I have to code my own observable pattern?
推荐答案
只需使用concat
然后使用toArray
:
var arr = [obs1, obs2, obs3];
Observable.concat(...arr).toArray().subscribe(function (observableItems) {})
如果您需要行为,则与forkJoin
相似(仅从每个可观察对象中获取最后的结果),如@cartant在评论中所述:在连接可观察对象之前,您需要将last
运算符应用于可观察对象:
If you need behavior, more similar to forkJoin
(to get only last results from each observables), as @cartant mentioned in comment: you will need to apply last
operator on observables before concatenating them:
Observable
.concat(...arr.map(o => o.last()))
.toArray()
.subscribe(function (observableItems) {})
这篇关于Rxjs Observable按顺序运行并返回一个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!