Below is the code that is handy when you want to execute several Promise actions in sequence:
function PromiseChain(arr, fct) { var dfd = Promise.resolve(); var res = arr.map(function(item,idx) { dfd = dfd.then(function() { return fct(item,idx) }); return dfd }); return Promise.all(res) } // for short version: // function PromiseChain(n,r){var e=Promise.resolve(),i=n.map(function(n,i){return e=e.then(function(){return r(n,i)})});return Promise.all(i)}
And an example about how to use it:
function promFunc(key) { return new Promise(function(prom_res) { setTimeout(function() { prom_res(key) }, 1000); }) } PromiseChain(["a", "b", "c"], function(val, idx) { console.log(idx, val); return promFunc(idx+"_"+val); }) .then(function(res) { console.log(res); }) // result: // 0 a // 1 b // 2 c // Array [ "0_a", "1_b", "2_c" ]