我有数量可变的 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/