Queuing asynchronous operations in ES8, per this blog post of mine.
Fundamentally, we want to perform a number of arbitrary asynchronous functions in series.
For repeat operations - for example, performing the same asynchronous operation across multiple pieces of data which we already have, using for-of syntax generally suits:
const readFile = require('util').promisify(require('fs').readFile);
(async () => {
const files = [ './2019-01-02.log', './2018-01-01.log', './2000-12-12-.log' ];
for (const file of files) {
const result = await readFile(file);
// ... do something ...
}
})();
But when he have various operations, often acting in an asynchronous chain and passing results to each other, I'd argue that it's more idiomatic to use Array.reduce()
. Take a look at index.js
to see how I've done it - and let me know what you think!