是应该拒绝承诺错误或字符串?

时间:2015-03-29 22:00:35

标签: javascript promise

我正在编写一个在Javascript中大量使用类似ECMAScript 6的承诺的代码。

我无法决定,如果用字符串或错误拒绝承诺更“正确”,因为我已经看到使用了这两种模式。

也就是说,如果最好打电话

return new Promise(response, reject) {
    reject("Sky is falling.");
}

return new Promise(response, reject) {
    reject(new Error("Sky is falling."));
}

1 个答案:

答案 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
});

它将字符串和错误显示为有效"原因"拒绝主要的(我认为)是"原因"应该是有意义的。

如果堆栈跟踪有用,那么提供错误可能会更好。如果只需要一个简单的字符串,那就足够了。