1

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

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

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

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

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

jqXHR 对象是一个 Promise,但也有额外的方法,如 .abort() 以便您可以在发出请求后停止请求。

随着用户越来越多地将 Promise 模式用于 AJAX 等异步工作,为 jQuery.ajax 返回的 Promise 提供特殊情况的想法越来越糟糕。

成功、错误、完成、完成、失败、总是

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

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

任何澄清在这里将不胜感激!

4

1 回答 1

2

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

  • done
  • fail
  • always
  • progress
  • state
  • pipe

then除了新的和方法之外,方法继续得到支持catch

在 jqXHR 对象(也是 Promise)上,方法success, error, complete(从 1.8 开始已被弃用)已被删除

于 2016-01-26T18:42:29.057 回答