jQuery 过去只有回调函数success
and error
and complete
.
然后,他们决定使用 jqXHR 对象支持 Promise,就在那时他们添加了.done()
, .fail()
, .always()
等等...本着 Promise API 的精神。这些新方法的用途与回调大致相同,但形式不同。您可以使用更适合您的编码风格的 API 风格。
随着人们越来越熟悉 Promise,并且越来越多的异步操作使用这个概念,我怀疑随着时间的推移,越来越多的人会转向 Promise API,但与此同时 jQuery 同时支持这两者。
The .success()
method 已被弃用,取而代之的是通用的 Promise 对象方法名称。
来自jQuery 文档 https://api.jquery.com/jQuery.ajax/,您可以看到各种 Promise 方法如何与回调类型相关:
jqXHR.done(函数(数据,textStatus,jqXHR){});替代
构造成功回调选项,.done() 方法替换
已弃用的 jqXHR.success() 方法。参考 deferred.done() 进行
实施细节。
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});一个
错误回调选项的替代构造,.fail() 方法
替换已弃用的 .error() 方法。参考 deferred.fail() 进行
实施细节。
jqXHR.always(function( 数据|jqXHR, textStatus, jqXHR|errorThrown ) {
});完整回调选项的另一种构造是
.always() 方法取代了已弃用的 .complete() 方法。
为了响应成功的请求,该函数的参数是
与 .done() 相同:数据、textStatus 和 jqXHR 对象。为了
失败的请求参数与 .fail() 的参数相同:
jqXHR 对象、textStatus 和 errorThrown。参考deferred.always()
了解实施细节。
jqXHR.then(函数(数据,textStatus,jqXHR){},函数(jqXHR,
文本状态,错误抛出){});结合了以下功能
.done() 和 .fail() 方法,允许(从 jQuery 1.8 开始)
潜在的承诺被操纵。参考 deferred.then() 进行
实施细节。
如果您想以更符合 ES6 Promises 标准的方式进行编码,那么您只需使用这四个选项.then()
.