jQuery 3.x中的jqXHR对象是否仍然支持.done方法?

时间:2016-01-26 18:24:02

标签: javascript jquery ajax jquery-3

我在整个JavaScript代码中都注意到,AJAX请求通常使用以下jQuery 2.x模式执行:

$.ajax({
     ...
})
.done(function (data) {
     ...
});

done方法中找到的代码将在收到响应后执行。

在阅读jQuery 3.x(https://blog.jquery.com/2016/01/14/jquery-3-0-beta-released/)的beta版发行说明后,我注意到以下声明:

  

在jQuery.ajax

中删除了特殊情况的Deferred方法      

jqXHR对象是一个Promise,但也有一些额外的方法,比如.abort(),这样你就可以在请求完成后停止它。

     

随着用户越来越多地接受像AJAX这样的异步工作的Promise模式,jQuery.ajax返回的Promise特殊情况的想法越来越糟糕。

     

成功,错误,完成,完成,失败,永远

     

请注意,这对同名的回调完全没有任何影响,这些回调继续存在且不会被弃用。这只会影响Promise方法!

如果我正确读取此内容,似乎表明我的方法在返回响应后执行JavaScript代码将不再受支持。是这样的,还是我错过了什么?另外,我是否理解successerror回调函数现在是执行此类任务的首选方法?

非常感谢此处的任何澄清!

1 个答案:

答案 0 :(得分:2)

看看测试版代码,我可以确认

  • done
  • fail
  • always
  • progress
  • state
  • pipe
除了新的thencatch方法之外,还继续支持

方法。

在jqXHR对象(也是承诺)上,方法successerrorcomplete(从1.8开始弃用)have been removed