【发布时间】:2015-06-20 03:07:41
【问题描述】:
Here 建议使用 done 方法结束 Promise 链,以便重新抛出错误:
done 与 then 用法的黄金法则是:要么返回你的承诺 给其他人,或者如果链以你结束,调用 done 终止 它。用 catch 终止是不够的,因为 catch 处理程序 本身可能会引发错误。
它适用于 AngularJs 吗?我看了看,框架里好像没有这样的方法。
更新:
我查看了代码,发现如下:
try {
if (isFunction(fn)) {
promise.resolve(fn(state.value));
} else if (state.status === 1) {
promise.resolve(state.value);
} else {
promise.reject(state.value);
}
} catch (e) {
promise.reject(e);
exceptionHandler(e);
}
window.onerror = function(e) {
// doesn't come here
}
所以基本上 Angular 还会在 exceptionHandler(e); 中记录来自承诺处理程序的错误,因此它不会被忽视。如果需要,可以按照 here 的说明覆盖默认 exceptionHandler 的行为。
【问题讨论】:
标签: javascript angularjs promise angular-promise