Async: ¿Cuál es un buen patrón para esperar a que finalicen todas las iteraciones de async.eachLimit antes de continuar?

Creado en 17 abr. 2019  ·  4Comentarios  ·  Fuente: caolan/async

pregunta: poco nuevo en async y tiene el siguiente código para descargar muchos archivos, 2 aproximadamente al mismo tiempo

async.eachLimit(files, 2, async (file, callback) => {
     reportStep("downloading");
     console.log("async start: " + file.path);
     await addFile(file.path, file.size);
     console.log("async end: " + file.path);    
     callback();
 }) 
reportStep("completed")

Por supuesto, "completado" se activa rápidamente mientras async.eachLimit continúa ejecutando funciones.

¿Cuál es una buena forma de esperar a que se realicen todas las iteraciones?

question

Todos 4 comentarios

nvm, no leyó los documentos lo suficientemente cerca.

hay otro parámetro de devolución de llamada, terminó envolviéndolo todo en una promesa de que puedo esperar

function download(files) {
    return new Promise((resolve, reject) => {
async.eachLimit(files, 2, async (file, callback) => {
     reportStep("downloading");
     console.log("async start: " + file.path);
     await addFile(file.path, file.size);
     console.log("async end: " + file.path);    
     callback();
         }, (error) => {
            if (error){
                reject(error);
            } else {
                resolve();
            }
        })
    });
}

await download(files)

Nota al margen, si está utilizando la versión preliminar de v3 , no necesita el contenedor. eachLimit devolverá una promesa si no pasa la devolución de llamada final.

hmm, intenté esperar async.eachLimit pero no funcionaba por alguna razón u otra. Eso es lo que me impulsó a publicar aquí. Tendré que darle otra oportunidad.

¿Tuviste éxito? Me enfrento a lo mismo: simplemente no espera a que finalicen todas las promesas de iteraciones.

¿Fue útil esta página
0 / 5 - 0 calificaciones