JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.2/q.min.js"></script>
JavaScript
var results = [1, 2, 3, 4, 5];
function delayedCall(i, r, idx){
var deferred = Q.defer();
setTimeout(function(){
console.log('item', i, 'result', r, 'index', idx);
deferred.resolve(true);
}, 1000 * idx);
return deferred.promise;
}
function workCollection(arr) {
return arr.reduce(function(promise, item, index) {
return promise.then(function(result) {
return delayedCall(item, result, index);
});
}, Q.resolve(true));
}
Q.resolve().then(function(){
console.log('start');
}).then(function(){
return workCollection(results)
}).then(function(){
console.log('done');
}).catch(function(err){
console.log(err);
});