$.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, tasksData,testingTrackerData,highlightsData);
})
.fail(function(data, textStatus, jqXHR) {
console.error('Got error in '+jqXHR);
});
Try
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, textStatus, jqxhr) {
console.log(data, textStatus, jqxhr);
printData(data)
}
// `error`
, function (jqxhr, textStatus, errorThrown) {
console.log(jqxhr, textStatus, errorThrown)
})
})
});
jsfiddlehttp://jsfiddle.net/guest271314/91Lomwr3/ http://jsfiddle.net/guest271314/91Lomwr3/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)