Какой фикс для loopRunning и signal.addEventListener abort?

Фикс обычно включает:

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

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

Фикс обычно включает:

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

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

Проблема с loopRunning и signal.addEventListener('abort', ...) часто связана с тем, что при отмене операции через AbortSignal обработчик события не корректно останавливает цикл или не очищает ресурсы, что может приводить к зависаниям или утечкам.

Фикс обычно включает:

  1. В обработчике события abort устанавливать флаг, который контролирует выполнение цикла (loopRunning = false), чтобы цикл корректно завершился.
  2. Убедиться, что обработчик события удаляется после срабатывания, чтобы избежать повторных вызовов.
  3. Если цикл асинхронный, использовать await и проверять состояние флага внутри цикла.

Пример:

let loopRunning = true;
const controller = new AbortController();
const signal = controller.signal;

signal.addEventListener('abort', () => {
  loopRunning = false;
});

async function runLoop() {
  while (loopRunning) {
    // Выполнение работы
    await doWork();
    if (signal.aborted) break;
  }
}

runLoop();

// Для отмены
controller.abort();

Таким образом, фикс — это правильное управление состоянием цикла через флаг и корректная обработка события abort.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку