【问题标题】:Deprecated jQuery callbacks- clarification?已弃用的 jQuery 回调 - 澄清?
【发布时间】:2014-03-19 07:59:39
【问题描述】:

Since jQuery 1.5 - jqXHR$.ajax() 返回的对象实现Promise 接口。

docs 还声明 jqXHR.donejqXHR.failjqXHR.always 分别是 已弃用 success / fail/ complete 的替代构造。

弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调在 jQuery 1.8 中被弃用。准备 您最终删除的代码,请使用 jqXHR.done()、jqXHR.fail()、 和 jqXHR.always() 代替。

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

但后来我看到了async 文档:

async : 从 jQuery 1.8 开始,async: falsejqXHR ($.Deferred) 的使用是 已弃用;您必须使用 success/error/complete 回调选项 代替 jqXHR 对象的对应方法如 jqXHR.done()deprecated jqXHR.success()

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

问题:

有什么情况我需要仍然使用success/error/complete?怎么会 ?它们已被弃用!

nb,为什么这么乱?他们像每个版本一样更改和删除方法并替换(!例如管道,然后)

【问题讨论】:

  • 逻辑结论:async: false 已弃用。
  • @dystroy真正的问题是success在被声明为deprecated时仍在使用....
  • @dystroy async: false 未被弃用,但 the use of async: false with jqXHR 被弃用。
  • @xdazz 这只是个玩笑……暗示这个可怕的东西早就应该被删除了^^
  • @dystroy 不能同意更多:)

标签: javascript jquery


【解决方案1】:

结论:

不推荐使用的是同时使用 async: false 和 jqXHR ($.Deferred) API(组合使用)

$.ajax()success/error/complete 回调选项未弃用

jqXHR.success()jqXHR.error()jqXHR.complete() 回调已弃用

当使用异步AJAX请求async: true)时,您可以使用$.ajax()success/error/complete回调选项jqXHR.donejqXHR.failjqXHR.always.

但是当使用同步AJAX请求(async: false)时, 您不应该使用延迟 API(jqXHR.donejqXHR.failjqXHR.always), 但使用$.ajax()success/error/complete 回调选项。

【讨论】:

  • async: false 不是已弃用吗?
  • @Satpal 没有,the use of async: false with jqXHR ($.Deferred) 是。
  • @xdazz 所以$.ajax(..async:false...).done(...) 已被弃用,而$.ajax(..async:false... , success:function(){...}) 不是......对吗?
  • @RoyiNamir 是的,就是这样 :)
猜你喜欢
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多