Async: Was ist ein gutes Muster, um zu warten, bis alle Iterationen von async.eachLimit abgeschlossen sind, bevor Sie fortfahren?

Erstellt am 17. Apr. 2019  ·  4Kommentare  ·  Quelle: caolan/async

Frage: Etwas neu für Async und folgenden Code zum Herunterladen vieler Dateien, 2 ungefähr gleichzeitig

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")

Natürlich wird "completed" schnell gefeuert, während async.eachLimit weiterhin Funktionen ausführt.

Was ist ein guter Weg, um zu warten, bis alle Iterationen durchgeführt wurden?

question

Alle 4 Kommentare

nvm, habe die Dokumentation nicht genau genug gelesen.

Es gibt noch einen weiteren Callback-Parameter, der alles in einem Versprechen verpackt hat, auf das ich warten kann

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)

Randnotiz: Wenn Sie die Vorabversion von v3 , benötigen Sie den Wrapper nicht. eachLimit gibt eine Zusage zurück, wenn Sie den letzten Rückruf nicht bestehen.

hmm, ich habe versucht, auf async.eachLimit zu warten, aber es hat aus irgendeinem Grund nicht funktioniert. Das hat mich veranlasst, hier zu posten. Ich muss es noch einmal versuchen.

Ist es Ihnen gelungen? Ich stehe vor dem gleichen - es wartet einfach nicht, bis die Versprechen aller Iterationen abgeschlossen sind.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

alexbjorlig picture alexbjorlig  ·  11Kommentare

rumkin picture rumkin  ·  22Kommentare

flatcoding picture flatcoding  ·  14Kommentare

ORESoftware picture ORESoftware  ·  8Kommentare

caub picture caub  ·  12Kommentare