Sobes.tech
Middle+

Implemente el método run de la clase Queue de manera que la implementación siga el ejemplo de uso. El método run debe ejecutar secuencialmente las funciones asíncronas que se le pasen. La siguiente función en la cola solo puede ser llamada después de llamar a next. Si ocurre un error en alguna de las funciones, no se llaman las funciones siguientes. Los métodos deben soportar encadenamiento (chaining).

sobes.tech AI

Respuesta de la IA

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