Вопрос на собеседовании · Frontend-разработчик
Как работает event loop? Что выполнится раньше: setTimeout или Promise.then?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
Event loop координирует выполнение синхронного JavaScript и отложенных задач. Сначала движок выполняет текущий стек вызовов. Когда стек пуст, он полностью очищает очередь микрозадач, а затем берёт следующую макрозадачу.
Обработчик Promise.then попадает в очередь микрозадач, а callback setTimeout — в очередь макрозадач. Поэтому после синхронного кода обычно выполнится Promise.then, даже если таймер установлен на ноль миллисекунд.
01 · Структура ответа
Что важно сказать интервьюеру
Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:
02 · Пример
Как объяснить на практике
Если вывести A синхронно, запланировать setTimeout с B, Promise.then с C и затем вывести D, типичный порядок будет A, D, C, B: сначала стек, затем микрозадача промиса, затем таймер.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Что меняется при использовании await?
- Когда браузер может выполнить рендеринг?
- Чем event loop Node.js отличается от браузерного?
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с опорой.
Mira