Javascript JQuery承诺:在不等待承诺解析的情况下调用fail()

Javascript JQuery承诺:在不等待承诺解析的情况下调用fail(),javascript,jquery,typescript,xmlhttprequest,promise,Javascript,Jquery,Typescript,Xmlhttprequest,Promise,我有以下jQuery承诺(使用TypeScript)。奇怪的是,fail()中的操作被直接调用-错误消息被写入控制台-即使承诺随后成功解决: this.jQuery.getJSON(this.options.searchUrl,queryFilter) .done(此.orderLinesCallback) .fail(console.log(“检索订单时出错”); 完成和失败参数必须是函数: .done(this.orderLinesCallback) .fail(function(e, f,

我有以下jQuery承诺(使用TypeScript)。奇怪的是,fail()中的操作被直接调用-错误消息被写入控制台-即使承诺随后成功解决:

this.jQuery.getJSON(this.options.searchUrl,queryFilter)
.done(此.orderLinesCallback)
.fail(console.log(“检索订单时出错”);

完成
失败
参数必须是函数:

.done(this.orderLinesCallback)
.fail(function(e, f, g) {
    console.log("Error on retrieving orders");
});

这样做可以保证
console.log(“检索订单时出错”)fail
)时才会执行code>,并且
fail
参数必须是函数:

.done(this.orderLinesCallback)
.fail(function(e, f, g) {
    console.log("Error on retrieving orders");
});

这样做可以保证
console.log(“检索订单时出错”)仅在调用匿名函数(参数为
fail
)时执行

如何确保承诺已成功解决?请尝试
.fail(函数(){console.log(“检索订单时出错”)}
。实际上,您执行了
console.log()
,并使用返回值(
undefined
)作为
fail()
的回调。总是会忽略明显的问题@瑟科是对的。您只需始终运行
console
,因为它不在匿名函数中:)另一件事:对
done()
函数的回调将失去其作用域。如果需要作用域,您可能需要添加
.bind(this)
。我的坏消息。是的,done()正在调用函数,但fail()不是。如何确保承诺已成功解决?请尝试
.fail(function(){console.log(“检索订单时出错”)}
。实际上,您执行了
console.log()
,并使用返回值(
undefined
)作为
fail()
的回调。总是会忽略明显的问题@瑟科是对的。您只需始终运行
console
,因为它不在匿名函数中:)另一件事:对
done()
函数的回调将失去其作用域。如果需要作用域,您可能需要添加
.bind(this)
。我的坏消息。是的,done()正在调用函数,但fail()没有。