Middle+
Queue sinfinin run metodunu istifadə nümunəsinə uyğun şəkildə həyata keçirin. run metodu ona ötürülən asinxron funksiyaları ardıcıl şəkildə icra etməlidir. Növbədəki növbəti funksiya yalnız next çağırıldıqdan sonra çağırıla bilər. Əgər funksiyalardan birində xəta baş verərsə, növbəti funksiyalar çağrılmır. Metodlar chaining-i dəstəkləməlidir.
sobes.tech Süni İntellekt
AI-dan cavab
Ниже пример реализации класса 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();