假设我动态创建了一个可观察数组:
let obsArray = dataArray.map((data) => observableFunc(data))
我想按顺序执行这些可观察对象,只有在obsArray[n]完成后才执行obsArray[n+1]。下一个可观察对象的执行并不依赖于前一个可观察对象的结果。
在数组中的每个可观察对象完成后,我希望从处理这些可观察对象的函数中返回。
基本上,我想找到一种类似于forkJoin的方法来确保顺序执行。
假设我动态创建了一个可观察数组:
let obsArray = dataArray.map((data) => observableFunc(data))
如前所述,concat
操作符可以将发出的值排成一行。您可以将可观察数组传递给它,如下所示(感谢ES6扩展运算符!):
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));