当多个Deferred对象传递给jQuery.when时,该方法从新的“主” Deferred对象返回Promise,该对象跟踪已传递的所有Deferred的聚合状态。
该方法将
所有“递延者”解决后,立即解析其主递延者;或
只要其中一个“延期者”被拒绝,就拒绝其主“延期者”。
如果主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
});
在多个Deferred的情况下,其中一个Deferred被拒绝,当立即解散其主Deferred的失败回调时,jQuery。即使此时某些Deferred仍未解决:
$.when( $.getJSON('foo'), $.getJSON('bar') ).fail(function(req) {
// req is the jqXHR object for one of the failed requests
});
当所有传递给jQuery的Deferred不再“未解决”(即全部“已解决”或“已拒绝”)时,我需要触发回调。我可以发送具有200个OK代码的JSON对象(而不是发送带有404 Not Found错误状态代码的JSON),并在done()方法中确定成功/错误,但是我更喜欢保持API RESTful。我该怎么做?
RISEBY
偶然的你
相关分类