السؤال: جديد قليلاً على غير متزامن ولديك الكود التالي لتنزيل الكثير من الملفات ، 2 في نفس الوقت تقريبًا
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")
بالطبع ، يتم فصل "مكتمل" بسرعة بينما يواصل async.eachLimit تنفيذ funcs.
ما هي الطريقة الجيدة لانتظار كل التكرارات؟
nvm ، لم يقرأ المستندات قريبًا بدرجة كافية.
هناك معلمة رد اتصال أخرى ، انتهى بها الأمر إلى اختتامها كلها في وعد يمكنني انتظاره
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)
ملاحظة جانبية ، إذا كنت تستخدم الإصدار التجريبي لـ v3
، فلن تحتاج إلى الغلاف. سيعيد eachLimit
وعدًا إذا لم تنجح في رد الاتصال النهائي.
حسنًا ، حاولت انتظار async.eachLimit لكنها لم تكن تعمل لسبب أو لآخر. هذا ما دفعني للنشر هنا. سآخذ لقطة أخرى.
هل نجحت؟ أنا أواجه نفس الشيء - إنه ببساطة لا ينتظر انتهاء وعود كل التكرارات.