Middle+
Izpildiet Queue klases run metodi tā, lai tā ieviešana atbilstu lietošanas piemēram. Run metodei jāizpilda secīgi nodotās asīnhronās funkcijas. Nākamā funkcija rindā var tikt izsaukta tikai pēc next izsaukšanas. Ja kādā no funkcijām rodas kļūda, nākamās funkcijas netiek izsauktas. Metodēm jāatbalsta ķēdes saukšana (chaining).
sobes.tech AI
Atbilde no 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();