<分区>
假设我动态创建了一个可观察对象数组:
let obsArray = dataArray.map((data) => observableFunc(data))
我想按顺序执行每个 observable,仅在 obsArray[n] 完成后执行 obsArray[n+1]。下一个可观察对象的执行不依赖于前一个可观察对象的结果。
数组中的每个可观察对象完成后,我想从处理这个可观察对象数组的函数返回。
本质上,我想找到一个像 forkJoin 这样的方法来确保顺序执行。
<分区>
假设我动态创建了一个可观察对象数组:
let obsArray = dataArray.map((data) => observableFunc(data))
我想按顺序执行每个 observable,仅在 obsArray[n] 完成后执行 obsArray[n+1]。下一个可观察对象的执行不依赖于前一个可观察对象的结果。
数组中的每个可观察对象完成后,我想从处理这个可观察对象数组的函数返回。
本质上,我想找到一个像 forkJoin 这样的方法来确保顺序执行。
最佳答案
如前所述,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));
关于javascript - 如何按顺序执行一组 Observable,仅在前一个 Observable 完成后才执行下一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963603/
相关文章:
javascript - 无法将 Bootstrap 4、jQuery 和 PopperJS 库添加到 .angular-cli.json
angular - 运行 npm i 时发生错误(退出代码 1)
javascript - Android 上的 React Native - 带图片的 ScrollView 性能糟糕
javascript - 为什么 JavaScript 中的下划线功能不起作用?
javascript - 无法使用 updateNg1Component() 在 Angular 2 应用程序中使用 Angular 1 指令
javascript - jQuery 在函数执行时更改图像以显示进度