Как можно реализовать очередь задач через промисы без флагов и счётчиков? Что такое worker в контексте такой очереди?

Последовательную очередь можно построить цепочкой Promise, сохраняя хвост и добавляя следующую задачу после него.

Короткий ответ

Что ответить на собеседовании

Последовательную очередь можно построить цепочкой Promise, сохраняя хвост и добавляя следующую задачу после него.

Подробный разбор

Ответ с пояснениями

Последовательную очередь можно построить цепочкой Promise, сохраняя хвост и добавляя следующую задачу после него.

Задача передаётся как функция, чтобы она не стартовала заранее. Ошибка возвращается вызывающему коду, но не останавливает всю очередь.

function createQueue() {
  let tail = Promise.resolve();
  return task => {
    const result = tail.then(() => task());
    tail = result.catch(() => {});
    return result;
  };
}

Worker в таком контексте — логический исполнитель, который берёт следующую задачу после предыдущей; это не обязательно Web Worker или отдельный поток. Для параллельности создают ограниченное число исполнителей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее