Sobes.tech
Middle+
24

Queue класының run әдісін іске асырыңыз, ол қолдану мысалымен сәйкес келуі керек. run әдісі оған берілген асинхронды функцияларды кезекпен орындауы керек. Келесі функция тек next шақырылғаннан кейін ғана шақырылуы мүмкін. Егер бір функцияда қате болса, келесі функциялар шақырылмайды. Әдістер тізбектелуге қолдау көрсетуі керек.

Сұралған компаниялар
КасперскийКасперский

AI-дан жауап

sobes.tech 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();