Javascript 我如何按顺序执行一组可观察对象,只在前一个可观察对象完成后执行下一个?

Javascript 我如何按顺序执行一组可观察对象,只在前一个可观察对象完成后执行下一个?,javascript,angular,asynchronous,rxjs,observable,Javascript,Angular,Asynchronous,Rxjs,Observable,假设我动态创建了一组可观察对象: let obsArray = dataArray.map((data) => observableFunc(data)) 我希望按顺序执行每个观察对象,仅在obsArray[n]完成后执行obsArray[n+1]。下一个可观察对象的执行不取决于前一个可观察对象的结果 在数组中的每个可观察对象完成后,我想从处理这个可观察对象数组的函数返回 本质上,我想找到一种像forkJoin这样的方法来确保顺序执行。如前所述,concat操作符可以对齐一行中发出的值。

假设我动态创建了一组可观察对象:

let obsArray = dataArray.map((data) => observableFunc(data))
我希望按顺序执行每个观察对象,仅在obsArray[n]完成后执行obsArray[n+1]。下一个可观察对象的执行不取决于前一个可观察对象的结果

在数组中的每个可观察对象完成后,我想从处理这个可观察对象数组的函数返回


本质上,我想找到一种像forkJoin这样的方法来确保顺序执行。

如前所述,
concat
操作符可以对齐一行中发出的值。您可以按如下方式向其传递可观测的数组(thx到ES6扩展运算符!):


我认为concat()的签名不接受数组。再看看,也许我错了?编辑:没关系,它不会接受一系列可观察的问题。这个问题与标记为已经有答案的问题不同。这个问题是关于观察值的数组,而不是独立的观察值。我在序列中触发一个观察数组时遇到了同样的问题。当使用函数为concat操作符提供值时,这不起作用。
const obsArray = [
  Rx.Observable.of(1, 2, 3), 
  Rx.Observable.of(4, 5, 6), 
  Rx.Observable.of(7, 8, 9)];

const example = Rx.Observable.concat(...obsArray);
// or using old apply method
// Rx.Observable.concat.apply(this, obsArray); 

// prints: 1,2,3,4,5,6,7,8,9
const subscribe = example.subscribe(val => console.log(val));