假设我动态创建了一个可观察数组:
let obsArray = dataArray.map((data) => observableFunc(data))
我想按顺序执行这些observable中的每一个,只有在obsArray [n]完成后才执行obsArray [n + 1]。下一个可观察的执行不依赖于先前可观察的结果。
在数组中的每个observable完成之后,我想从处理这个可观察数组的函数返回。
基本上,我想找到一个像forkJoin这样的方法来确保顺序执行。
答案 0 :(得分:6)
如前所述,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));