【发布时间】:2018-04-14 05:49:13
【问题描述】:
错误:h1.js:25 Warning: a promise was rejected with a non-error: [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 设为:
.fail(function(jqXHR, textStatus, errorThrown) {
reject(new Error(errorThrown))
})
【问题讨论】:
-
做console.log(error);错误是说错误不是错误类型的对象
-
你得到一个字符串,但最好创建一个
Error对象。所以在你的拒绝函数中做reject(new Error(error))。除了错误实际上是什么之外,这是一个额外的问题。优点:堆栈跟踪将在Error对象上可用。 -
谢谢,但由于某种原因它没有解决我的问题,请参阅更新
-
在 Chrome 中抛出这个的扩展是 Honey,我刚刚卸载了它。如果你是作者,我希望你尽快修复它。
标签: javascript jquery ajax promise deferred