gpt4 book ai didi

jQuery Deferred .then() 在 .fail() 之后不会被调用

转载 作者:行者123 更新时间:2023-12-03 22:29:46 36 4
gpt4 key购买 nike

我正在使用 jQuery.Deferred 并注册 donefailthen 处理程序:

$.when( some_ajax(url) )
.done(function(result){})
.fail(function(){})
.then(function(){}); //just like that, with a single parameter

我发现,当我的 ajax 调用成功时,donethen 回调将按此顺序调用。但是,当 ajax 失败时,会调用 fail 回调,但我没有到达 then 回调。

我已阅读 jQuery.Deferred 文档,但找不到有关此行为原因的提示。

当使用 always 而不是 then 时,在两种情况下都会调用它 - 成功和失败(首先 done/fail 被调用,然后 always 被调用)。在我描述的场景中,文档似乎没有表明 alwaysthen 之间的预期差异,为什么它们的行为不同?

最佳答案

.then() 的语法是 .then(successCallback, failureCallbacl)这就是为什么在成功的情况下两者都会被调用,而在失败的情况下仅调用 fail

在您的情况下,您仅将一个回调传递给 .then() 方法,它将被注册为成功回调,因此您有两个成功回调,其中一个是通过 done( ) 和另一个带有 .then() 的。但对于错误情况,您只有一个使用 .fail()

注册的回调

如果您希望无论成功/失败都调用回调,请使用 .always()

关于jQuery Deferred .then() 在 .fail() 之后不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129166/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com