【发布时间】:2017-01-06 12:34:23
【问题描述】:
假设我有如下承诺:
p.then(Task1)
.then(Task2)
.then(Task3)
.catch(errorHandler);
当Task2遇到错误时,如何知道错误来自catch中的Task2?
【问题讨论】:
-
在Task2中你可以做
try{...code} catch(err){return Promise.reject("rejected at task 2: " + err)} -
最简单的方法是让每个Task抛出一个有意义的错误
-
@Redu try/catch 仅适用于同步错误。我收集到 OP 也想从 Task2 中捕获异步错误。
-
@jib 异步错误非常容易。您只需进行异步调用并返回返回的 Promise 并在下一阶段的
fulfilled或rejected回调中处理结果或错误。任何结果或错误都应返回到下一阶段处理。我想可能有三件事出错了。 1) 一个不受控制的同步错误(尝试 catch 并从 catch 块中拒绝) 2) API 返回承诺被拒绝.. 只需将其返回到下一个 then 阶段,3) 受控错误(如数据不足或缺少参数)返回一个 @ 987654325@ -
你将如何在同步代码中做到这一点?
标签: javascript node.js error-handling promise bluebird