Middle+
Queue კლასის run მეთოდის განხორციელება ისე, რომ მისი განხორციელება შესაბამისი იყოს გამოყენების მაგალითთან. 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();