Promise 应该被 Error 还是 string 拒绝?
Should Promise be rejected with Error or string?
我正在编写的代码在 Javascript 中大量使用类似 ECMAScript 6 的承诺。
我无法决定,是 "correct" 拒绝带有字符串的 promise 还是带有错误的 promise,因为我已经看到这两种模式都被使用了。
也就是如果打电话比较好
return new Promise(response, reject) {
reject("Sky is falling.");
}
或
return new Promise(response, reject) {
reject(new Error("Sky is falling."));
}
查看 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
});
它显示字符串和错误都是有效的 "reasons" 拒绝。最主要的(我认为)是 "reason" 应该是有意义的。
如果堆栈跟踪有帮助,那么提供错误可能会更好。如果一个简单的字符串就够了。
我正在编写的代码在 Javascript 中大量使用类似 ECMAScript 6 的承诺。
我无法决定,是 "correct" 拒绝带有字符串的 promise 还是带有错误的 promise,因为我已经看到这两种模式都被使用了。
也就是如果打电话比较好
return new Promise(response, reject) {
reject("Sky is falling.");
}
或
return new Promise(response, reject) {
reject(new Error("Sky is falling."));
}
查看 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
});
它显示字符串和错误都是有效的 "reasons" 拒绝。最主要的(我认为)是 "reason" 应该是有意义的。
如果堆栈跟踪有帮助,那么提供错误可能会更好。如果一个简单的字符串就够了。