弃用的jQuery回调 - 澄清?

时间:2014-03-19 07:59:40

标签: javascript jquery

jqXHR返回的

Since jQuery 1.5 - $.ajax()个对象实现了Promise接口。

docs还声明jqXHR.donejqXHR.failjqXHR.always已弃用 success / {{的替代构造1}} / fail

  

弃用通知:jqXHR.success(),jqXHR.error()和   从jQuery 1.8开始,jqXHR.complete()回调被弃用。准备   你的代码最终删除,使用jqXHR.done(),jqXHR.fail(),   和jqXHR.always()相反。

好的。(很久以前就知道了)

但后来我看到了complete doc:

  

async:从jQuery 1.8开始,asyncasync: false的使用是   弃用;您必须使用成功/错误/完整回调选项   代替的jqXHR对象的相应方法,如   jqXHR ($.Deferred)jqXHR.done()

这里的措辞非常不清楚(imho) - 因此,我不明白它的含义。

问题:

是否有任何情况仍然我需要使用deprecated jqXHR.success()?怎么会 ?他们被弃用了!

nb,为什么这一切都搞乱了?他们改变并删除方法并替换(例如管道,然后)像每个版本

1 个答案:

答案 0 :(得分:4)

结论:

弃用的是同时使用async:false和jqXHR($ .Deferred)API(合并用法)

success/error/complete的{​​{1}}回调选项未弃用

$.ajax()jqXHR.success()jqXHR.error()回调已弃用

使用异步AJAX请求jqXHR.complete())时,您可以使用async: true {{success/error/complete回调选项1}},$.ajax()jqXHR.done

但是当使用同步AJAX请求jqXHR.fail)时, 您不应使用延迟API(jqXHR.alwaysasync: falsejqXHR.done), 但使用jqXHR.fail的{​​{1}}回调选项。