我正在编写一个在Javascript中大量使用类似ECMAScript 6的承诺的代码。
我无法决定,如果用字符串或错误拒绝承诺更“正确”,因为我已经看到使用了这两种模式。
也就是说,如果最好打电话
return new Promise(response, reject) {
reject("Sky is falling.");
}
或
return new Promise(response, reject) {
reject(new Error("Sky is falling."));
}
答案 0 :(得分:14)
查看Mozilla的文档很有帮助:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject
Promise.reject("Testing static reject").then(function(reason) {
// not called
}, function(reason) {
console.log(reason); // "Testing static reject"
});
Promise.reject(new Error("fail")).then(function(error) {
// not called
}, function(error) {
console.log(error); // Stacktrace
});
它将字符串和错误显示为有效"原因"拒绝主要的(我认为)是"原因"应该是有意义的。
如果堆栈跟踪有用,那么提供错误可能会更好。如果只需要一个简单的字符串,那就足够了。