Middle
//Функсияи иҷроиро амалӣ кунед // promiseAllLimit(tasks: Array<() => Promise<unknown>>, limit: number): Promise<any[]>, //ки промисҳоро бо маҳдудият дар шумораи максималии дархостҳои ҳамзамон иҷро мекунад.
sobes.tech AI
Ҷавоб аз AI
Функсияи promiseAllLimit имкон медиҳад, ки вазифаҳо (функсияҳое, ки ваъдаҳоро баргардонанд) бо маҳдудият дар шумораи ваъдаҳои ҳамзамон иҷрошаванда оғоз карда шаванд. Ин барои мисол, барои пешгирӣ кардани бор кардани шабака ё API муфид аст.
Маслиҳат барои татбиқ:
function promiseAllLimit(tasks, limit) {
return new Promise((resolve, reject) => {
const results = [];
let running = 0;
let index = 0;
let resolvedCount = 0;
function runNext() {
if (resolvedCount === tasks.length) {
resolve(results);
return;
}
while (running < limit && index < tasks.length) {
const currentIndex = index;
const task = tasks[currentIndex];
index++;
running++;
task()
.then(result => {
results[currentIndex] = result;
})
.catch(err => {
reject(err);
})
.finally(() => {
running--;
resolvedCount++;
runNext();
});
}
}
runNext();
});
}
Ин ҷо мо оғоз мекунем то limit вазифа дар як вақт, ва пас аз анҷоми ҳар яке, дигареро оғоз мекунем, то ҳама иҷро шаванд. Натиҷаҳо дар массив дар тартиби вазифаҳои аслӣ нигоҳ дошта мешаванд.