import {AsyncExecutor} from "./asyncExecutor.js" function asyncSleep(interval){ return new Promise(resFn => { setTimeout(resFn, interval); }) } async function mockDownload(url, delay){ console.log(`starting download: ${url}`); await asyncSleep(delay); return url.toUpperCase(); } let executor = new AsyncExecutor(3); let asyncDownloads = [] for (let i=0; i<= 6; i++){ asyncDownloads.push(executor.submit( mockDownload, `www.jesoutienslapolice.fr/post_${i}`, Math.floor(Math.random() * 4000) ).then(result => { console.log(`download ${i} finished`); return result; })); console.log("after submit"); } let results = await Promise.all(asyncDownloads); console.log(`results: ${JSON.stringify(results, null, "\t")}`);