Progress tracking and time estimate for a queue of similarly sized tasks.
const doTaskAsync = require('./doTaskAsync');
async function doManyTasksAsync() {
const manyTaskInputs = new Array(1000);
let startTime = Date.now();
let totalPlanned = manyTaskInputs.length;
let totalDone = 0;
let totalWithErrors = 0;
for (const taskInput of manyTaskInputs) {
try {
await doTaskAsync(taskInput);
} catch (error) {
totalWithErrors++;
}
totalDone++;
console.log(formatProgress(startTime, totalPlanned, totalDone, totalWithErrors));
}
}