Middle+
Implementeer de run-methode van de Queue-klasse zodat de implementatie overeenkomt met het gebruiksvoorbeeld. De run-methode moet de meegegeven asynchrone functies achtereenvolgens uitvoeren. De volgende functie in de wachtrij mag pas worden aangeroepen nadat next is aangeroepen. Als er een fout optreedt in een van de functies, worden de volgende functies niet aangeroepen. Methoden moeten chaining ondersteunen.
sobes.tech AI
Antwoord van 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();