javascript - 如何按顺序执行一组 Observable,仅在前一个 Observable 完成后才执行下一个?

标签 javascript angular asynchronous rxjs observable

<分区>

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

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)

node.js - Node js。异步加解密

javascript - Android 上的 React Native - 带图片的 ScrollView 性能糟糕

javascript - 为什么 JavaScript 中的下划线功能不起作用?

javascript - 无法使用 updateNg1Component() 在 Angular 2 应用程序中使用 Angular 1 指令

javascript - jQuery 在函数执行时更改图像以显示进度

javascript - async.waterfall 的简单实现是什么?

php - 使 div 成为可点击的链接

javascript - Angular2 - 让组件等待服务完成数据获取,然后渲染它