小编Ala*_*cer的帖子

jQuery.when - 当所有延迟不再"未解决"(解决或拒绝)时回调?

当多个Deferred对象传递给jQuery.when时,该方法从一个新的"master"Deferred对象返回Promise,该对象跟踪它已经传递的所有Deferred的聚合状态.

该方法将

  1. 一旦所有Deferred解决,就解决它的主延期,或者
  2. 拒绝其主人一旦被拒绝一个延期,就拒绝延期.

如果主Deferred被解析(即所有Deferreds解析),则传递给传递给jQuery.when的所有Deferred的已解析值.例如,当Deferreds是jQuery.ajax()请求时,参数将是请求的jqXHR对象,按照它们在参数列表中给出的顺序:

$.when( $.getJSON('foo'), $.getJSON('bar') ).done(function(foo, bar) {

    // foo & bar are jqXHR objects for the requests

});
Run Code Online (Sandbox Code Playgroud)

在其中一个Deferreds被拒绝的多个Deferreds案例中,jQuery.when立即激活其主Deferred的失败回调,即使某些Deferreds在此时仍未解决:

$.when( $.getJSON('foo'), $.getJSON('bar') ).fail(function(req) {

    // req is the jqXHR object for one of the failed requests

});
Run Code Online (Sandbox Code Playgroud)

当所有传递给jQuery的Deferreds都不再"未解决"时,我需要触发一个回调(即所有的"被解决"或"被拒绝").我可以使用200 OK代码发送JSON对象(而不是发送带有404 Not Found错误状态代码的JSON)并在done()方法中确定成功/错误,但我更喜欢保持我的API RESTful.我怎么能做到这一点?

javascript rest jquery jquery-deferred

37
推荐指数
4
解决办法
2万
查看次数

标签 统计

javascript ×1

jquery ×1

jquery-deferred ×1

rest ×1