Rxjs Observable按顺序运行并返回一个数组 [英] Rxjs Observable run sequentially and return an array

查看:694
本文介绍了Rxjs Observable按顺序运行并返回一个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆