Middle+
Implementieren Sie die Methode run der Klasse Queue so, dass die Implementierung dem Beispiel entspricht. Die Methode run soll die übergebenen asynchronen Funktionen sequenziell ausführen. Die nächste Funktion in der Warteschlange kann nur nach dem Aufruf von next aufgerufen werden. Wenn in einer der Funktionen ein Fehler auftritt, werden die nachfolgenden Funktionen nicht aufgerufen. Die Methoden sollen Kettenaufrufe (chaining) unterstützen.
sobes.tech KI
Antwort von AI
Ниже пример реализации класса Queue с методом run, который последовательно выполняет асинхронные функции. Каждая функция получает next для вызова следующей. Если возникает ошибка, выполнение прерывается. Методы поддерживают цепочку вызовов.
class Queue {
constructor() {
this.tasks = [];
this.errorOccurred = false;
}
add(task) {
this.tasks.push(task);
return this; // для chaining
}
run() {
const next = (err) => {
if (err) {
this.errorOccurred = true;
return;
}
if (this.tasks.length === 0) return;
const task = this.tasks.shift();
try {
task(next);
} catch (error) {
this.errorOccurred = true;
}
};
next();
return this; // для chaining
}
}
// Пример использования:
// const q = new Queue();
// q.add(next => { setTimeout(() => { console.log('1'); next(); }, 1000); })
// .add(next => { console.log('2'); next(); })
// .run();