Middle+
Реализ кунед метод run-и синфи Queue ба таври ки иҷрои онро мисоли истифода мувофиқ кунад. Метод run бояд функсияҳои асинхронро ба таври пайдарпай иҷро кунад. Функсияи оянда дар навбат танҳо пас аз даъвати next метавонад даъват шавад. Агар дар яке аз функсияҳо хато рух диҳад, функсияҳои баъдӣ даъват намешаванд. Методҳо бояд пайванди даъватҳоро (chaining) дастгирӣ кунанд.
sobes.tech AI
Ҷавоб аз 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();