multiple $.Deffered
by dsbonev
JavaScript
$.when(fetchUsers(), fetchAccounts())
.done(printUserBalance)
.fail(printError);
function fetchUsers() {
return mockedAjaxRequest('/users');
}
function fetchAccounts() {
return mockedAjaxRequest('/accounts');
}
function printUserBalance(users, accounts) {
users.forEach(function (user, index) {
console.log(user, 'has', accounts[index]);
});
}
function mockedAjaxRequest(url) {
var deferred = new $.Deferred();
setTimeout(function () {
if (isSuccessful()) {
console.log('Successfully fetched resourse for url', url);
deferred.resolve(mockedAjaxRequest.resources[url]);
} else {
deferred.reject('Failed to fetch resource for url ' + url);
}
}, 1000);
return deferred.promise();
}
mockedAjaxRequest.resources = {
'/users': ['Carlos Slim', 'Bill Gates'],
'/accounts': ['$73 billion', '$67 billion'],
};
function isSuccessful() {
return Math.random() < 0.5;
}
function printError(message) {
console.error('Error occured', message);
}