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 დავალებას ერთდროულად, და ყოველი დასრულების შემდეგ ვიწყებთ შემდეგს, სანამ ყველა არ დასრულდება. შედეგები ინახება მასივში თავდაპირველი დავალებების წესრიგში.