I'm making multiple API calls, after which I want to load the combined results of each call:
$.when(
$.get(localAPI, data, function(response) {
globalStore.localShares = Number(response);
}),
$.get(facebookAPI, '', function(response){
globalStore.facebookShares = Number(response[0].share_count);
}),
$.getJSON(pinterestAPI, {url: url}).done(function(response){
globalStore.pinterestShares = Number(response.count);
})
).always(function(){
//Do stuff
});
If the $.get
calls fail, the $.always
callback function still executes.
But
If just one $.get
call fails, it negates the actions of the previous calls.
So, if the first call fails, globalStore
returns with two items. If the first call succeeds but the second fails, globalStore
returns with only one item. And if the first two calls succeed but the last one fails, globalStore
returns empty.
Is there any way around this?
Edit:
Yes, I have tried to handle fails within $.when
like this:
$.when(
$.get(mu30_ajax_frontend.ajaxurl, data, function(response) {
globalStore.localShares = Number(response);
}).fail(function(){
globalStore.localShares = 0;
}),
$.get(facebookAPI, '', function(response){
globalStore.facebookShares = Number(response[0].share_count);
}).fail(function(){
globalStore.facebookShares = 0;
}),
$.getJSON(pinterestAPI, {url: url}).done(function(response){
globalStore.pinterestShares = Number(response.count);
}).fail(function(){
globalStore.pinterestShares = 0;
})
).always(function(){
//Do stuff
});
But I get the same result.