Multiple promises all completing at once
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.6/q.js"></script>
JavaScript
function MyAsyncCall(value) {
// Get a deferred object from Q library
var deferred = Q.defer();
setTimeout(function() {
console.log(value);
if(value != 3)
deferred.resolve(value);
else
deferred.reject();
}, Math.random() * 5000)
// Return the promise directly from the method
return deferred.promise;
}
var list = [1,2,3];
promiseArray = list.map(function(value){
return MyAsyncCall(value);
});
Q.all(promiseArray)
.then(function(arrayOfSuccess) {
// All promises are done. We now have an array of the resolve results
alert('Success: ' + arrayOfSuccess.length);
})
.catch(function(err) {
// One of the promises errored out
alert('Error: ' + err);
});