错误:h1.js:25 警告: promise 因非错误而被拒绝:[object String]
不完全确定原因,很乐意帮助理解错误及其原因。仍在学习 Promises 和 AJAX 所以帮助非常感谢! (例如,当我写这篇文章时,我也认为用一个 Promise 包装一个 ajax 对象有点多余,但老实说我不知道如何重写它)
var logisticsModule = (function() {
return {
initialize: function() {
dateTimeFxns.getReservedDates.then(
// success
function(reserved_dates) {
console.log("success with value = " + reserved_dates)
},
function(error) {
console.log("error with value = " + error)
}
)
}
}
})();
var dateTimeFxns = {
getReservedDates: new Promise( function(resolve, reject) {
$.ajax({
// some url & data
})
.done(function(result) {
resolve(result)
}
.fail(function(error) {
reject(error)
}
})
}
$(document).ready(function() {
logisticsModule.initialize();
})
当我有 .fail
时,UPDATE 警告消息仍然存在:
.fail(function(jqXHR, textStatus, errorThrown) {
reject(new Error(errorThrown))
})
最佳答案
这只是意味着抛出的错误不是instanceof Error
。例如,以下不是错误,但我可以抛出它,因为......好吧......你可以在 JavaScript 中抛出任何东西。
throw 42;
这给了我们一个美妙的未捕获异常:42
。
要抛出实际错误,请使用Error
:
throw new Error('An actual error');
现在在您的特定情况下,您需要传递 jQuery 提供的错误,这不是它传递的第一个参数。它给你一个字符串,所以把它包在错误中......
.fail(function(jqXHR, textStatus, errorThrown ) {
reject(new Error(errorThrown));
}
关于javascript - Promise 被拒绝并带有非错误警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062852/