Sobes.tech
Middle+

Queue sınıfının run metodunu, kullanım örneğine uygun olacak şekilde uygulayın. run metodu, kendisine iletilen asenkron fonksiyonları sıralı olarak çalıştırmalıdır. Kuyruktaki bir sonraki fonksiyon, yalnızca next çağrıldıktan sonra çağrılabilir. Bir fonksiyonda hata oluşursa, sonraki fonksiyonlar çağrılmaz. Metotlar zincirleme (chaining) desteği sağlamalıdır.

sobes.tech yapay zeka

AI'dan gelen yanıt

Ниже пример реализации класса 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();