Middle
//Implementiere die Funktion // promiseAllLimit(tasks: Array<() => Promise<unknown>>, limit: number): Promise<any[]>, //die Promises mit einer Begrenzung der maximalen gleichzeitigen Anfragen ausführt.
sobes.tech KI
Antwort von AI
Die Funktion promiseAllLimit ermöglicht das Ausführen von Aufgaben (Funktionen, die Promises zurückgeben) mit einer Begrenzung der gleichzeitigen laufenden Promises. Dies ist nützlich, um beispielsweise das Netzwerk oder die API nicht zu überlasten.
Implementierungsbeispiel:
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();
});
}
Hier starten wir bis zu limit Aufgaben gleichzeitig, und nach Abschluss jeder starten wir die nächste, bis alle verarbeitet sind. Die Ergebnisse werden in einem Array in der Reihenfolge der ursprünglichen Aufgaben gespeichert.