javascript - concatMap 可变数量的 promise 和管道结果作为下一个 promise 的参数

标签 javascript promise rxjs reactive-programming rxjs5

我有数量可变的 promise,我想按顺序执行它们,将前一个 promise 的结果作为下一个 promise 的参数。目前我设法连接它们以便按顺序执行它们:

const promises = [p1, p2, p3, p4, ....];
const source$ = promises.map(p => Rx.Observable.defer(p));
const combination$ = Rx.Observable.concat(...source$);
combination.subscribe((x) => console.log(x));

但是我现在如何设法将参数通过管道传递到每个 promise 中?我读到我可以使用 concatMap。类似的东西:

Observable.from(p1).concatMap(res => p2(res)).concatMap(res => p3(res))

我想我需要以某种方式总是在 concatMap 中返回一个新的 Observable。还有如果许多 promise 应该是可变的,如何链接 concatMaps?

有人可以指出我正确的方向吗?我是整个响应式(Reactive)编程的新手,但对于我已经理解的部分,它非常棒!

谢谢

最佳答案

好的伙计们,我终于得到了我想要的结果

const promises = [
  (i=0) => Promise.resolve(i+2), 
  (i=2) => Promise.resolve(i+4), 
  (i=2) => Promise.resolve(i+8)
];

const initial$ = Rx.Observable.from(promises[0]());

promises.reduce((o, p) => o.concatMap(p), initial$)
.subscribe(console.log);

关于javascript - concatMap 可变数量的 promise 和管道结果作为下一个 promise 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46072608/

相关文章:

javascript - 异步还是同步?我该如何处理这些API调用?

javascript - 如何使用 Rxjs First() 运算符仅获取一个项目

angular - rxjs pairwise 发出重复值

javascript - 仅在另一个脚本完成后才运行一个脚本的方法有哪些?

javascript - WinJS:在 512MB WinPhone8.1 Emu 上使用 BackgroundUploader 类后,Promise 链有时会卡住

javascript - 用可观察的条件过滤观察到的阵列

javascript - 单击时如何在导航栏元素下划线?

javascript - 从 Chrome 应用中的剪贴板获取当前文本

javascript - Highstock csv 日期问题

javascript - 重写日期构造函数