我昨天有this question regarding deferreds,@ yury-tarabanko回答了这个问题。 .done()调用完美无缺。我现在正在清理并添加.fail()响应。我已经尝试关闭服务器并更改URL以模拟失败的呼叫,但两者似乎都没有触发.fail()。我刚刚在控制台中收到失败的“GET”消息。
function getStoreCounts() {
var campaignID = $("input[title='Campaign ID']").val();
var storeLists = $.ajax({
type: "GET",
dataType: "jsonp",
url: "https://storeLists/apiIndex?callback=?&campaign_code=" + campaignID.toString(),
}),
storeCount = storeLists.then(function(data) {
var counting = $.map(data,function(storeList) {
$.extend(storeList,{stores:''});
var getCount = $.ajax({
type: "GET",
dataType: "jsonp",
url: "https://storeLists/apiStoreCount?callback=?&list_id=" + storeList.id.toString(),
});
return getCount.then(function(count) {
storeList.stores = count;
});
});
return $.when.apply($,counting).then(function() {
return data;
});
});
storeCount.done(function(data) {
$.each(data,function(i,tierCount) {
$("input[title='Tier "+tierCount.name+" Kit Count']").val(tierCount.stores.toString());
});
}).fail(function(jqXHR, textStatus, errorThrown){
console.log("foo");
console.log(textStatus + ': ' + errorThrown);
});
}
使用控制台编辑编辑我关闭Web服务时所获得的内容。在GET失败之后我没有得到任何东西,没有控制台记录错误,甚至没有“foo”。