Async: apa pola yang baik untuk menunggu semua iterasi async.eachLimit selesai sebelum melanjutkan?

Dibuat pada 17 Apr 2019  ·  4Komentar  ·  Sumber: caolan/async

pertanyaan: sedikit baru untuk async dan memiliki kode berikut untuk mengunduh banyak file, 2 pada waktu yang hampir bersamaan

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

Tentu saja, "selesai" dengan cepat diaktifkan saat async.eachLimit terus menjalankan fungsi.

Apa cara yang baik untuk menunggu semua iterasi selesai?

question

Semua 4 komentar

nvm, tidak membaca dokumen dengan cukup dekat.

ada lagi param panggilan balik, akhirnya membungkus semuanya dengan janji yang bisa saya tunggu

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)

Catatan tambahan, jika Anda menggunakan prarilis v3 , Anda tidak memerlukan pembungkusnya. eachLimit akan mengembalikan janji jika Anda tidak melewati panggilan balik terakhir.

hmm, saya mencoba menunggu async.eachLimit tetapi tidak berhasil karena beberapa alasan. Itulah yang mendorong saya untuk posting di sini. Aku harus mencobanya lagi.

Apakah Anda berhasil? Saya menghadapi hal yang sama - itu tidak menunggu janji semua iterasi selesai.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat