Tengo una matriz de 100.000 URL. Quiero recorrer la matriz y obtener el contenido de la URL. Estoy dividiendo la matriz dinámicamente, por lo que cada vez tomará 20 URL de la matriz (para evitar el desbordamiento de la memoria debido al tamaño del contenido obtenido de cada URL) y formará una nueva matriz con las 20 URL. El problema al que me enfrento es que estoy usando Promise.all si alguna de las solicitudes está en estado pendiente, detendrá la ejecución posterior. Quiero omitir la promesa pendiente después de cierto tiempo y el ciclo debería continuar funcionando.
(async () => { while(allUrls.length) { const splittedUrlsArray = allUrls.splice(0, 20); // splitting large array of urls to small arrays of 20 urls const urlContents = await getUrlContents(splittedUrlsArray); urlContents.map(async (item) => { }) } })() const getUrlContents = (urls) => { const promises = urls.map( async (url) => { try { const res = await axios.get(url); return res; } catch(err) { console.log(err); } }) return Promise.all(promises); }La operación estándar para los robots web es usar una cola. Como está usando promesas, intente ver algo como esto: https://www.npmjs.com/package/async-await-queue