$.when为同时查询的所有多个ajax调用返回Deferred对象.
如果一切都成功.done()执行,如果任何一个url失败.fail()执行.
如何处理部分成功状态? (即)如果5个url被传递给$.when,如果3个成功,我们需要处理成功状态,并且2失败,我们需要处理失败状态.
$.when($.getJSON(headerUrl),$.getJSON(tasksUrl),$.getJSON(testingTrackerUrl),$.getJSON(highlightsUrl))) .then(function(headerData,tasksData,testingTrackerData,highlightsData) { printData(headerData,highlightsData); }) .fail(function(data,textStatus,jqXHR) { console.error('Got error in '+jqXHR); });
解决方法
尝试
var request = function (url) { return $.getJSON(url) },requests = [ headerUrl,tasksUrl,testingTrackerDataUrl,highlightsDataUrl ]; // return array of `resolved`,`rejected` jqxhr objects $.when( $.map(requests,function (_request,i) { return request(_request) }) ) // do stuff with `resolved`,`rejected` jqxhr objects .always(function (arr) { $.each(arr,function (key,value) { // `success` value.then(function (data,jqxhr) { console.log(data,jqxhr); printData(data) } // `error`,function (jqxhr,errorThrown) { console.log(jqxhr,errorThrown) }) }) });
原文地址:https://www.jb51.cc/jquery/177299.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。