【发布时间】:2016-11-30 16:59:49
【问题描述】:
我正在构建一系列同步的 Promise,如下所示:
let order = [fn1, fn2, fn3];
let result = Promise.resolve();
order.reduce((chain, task) => {
return chain.then(task);
}, result);
(通过this article 的“执行系列承诺”部分)。这会像我期望的那样按顺序运行所有内容,但是在捕获错误/将catch 块放在哪里时遇到问题。
【问题讨论】:
-
旁注:即使像这样解析和链接,promise 也会异步执行。
-
一些想法:这些并不是真正同步的,它们是顺序的(所有的 Promise 都是异步的,总是......这听起来像迂腐,但如果你在外部世界中改变状态,它会有很大的不同);如果您想独立处理错误情况,基于将失败转换为序列中的下一个调用成功,那么您需要更改数据格式,或者您需要接受任何一个都可能失败,并允许消费者捕捉错误;最后,如果你不保存对方的承诺,你就无法传递它。
标签: javascript promise ecmascript-6 es6-promise