You can use Array.reduce .
Of course, this simplified approach will not work if you have a promise that might be a mistake, or if you need previous results, so you can make sequencePromises more general:
function genericSequencePromises(promiseFunction) { return (promise, parameter) => { return new Promise((resolve, reject) => return promiseFunction(resolve, reject, promise, parameter)); } }
Then you can do whatever you want while you return the promise.
Finally, you can use this little helper:
function promiseSeries(array, reducer) { return array.reduce(reducer, Promise.resolve()); }
Putting it all together:
let sequencePromises = genericSequencePromises((resolve, reject, promise, num) => { resolve(promise.then(_ => console.log(`done: ${num}`))); } promiseSeries(myArray, sequencePromises);
Thus, you can not only handle the matter in your question, but also much more complex cases.
Pedro castilho
source share