【发布时间】:2016-04-12 12:47:41
【问题描述】:
背景
This question 建议在 promise 函数中使用 throw 实际上与调用 reject 回调相同。
例如这些是等价的:
new Promise(function(resolve, reject) {
throw new Error("sadface"); // Using throw
}).catch(function(e) {
// ... handle error
});
new Promise(function(resolve, reject) {
reject(new Error("sadface")); // Using reject
}).catch(function(e) {
// ... handle error
});
问题
显然,如果涉及异步代码(例如数据库或 HTTP 请求),则不能使用 throw,因为堆栈已更改。
作为“最佳实践”,我应该始终在承诺中使用reject 以保持一致吗?还是应该在某些情况下仍使用throw?
【问题讨论】:
标签: promise ecmascript-6 angular-promise bluebird es6-promise