Выбор ответа Junior Event loop спрашивают часто обновлено

Что выполняется после синхронного кода

Вопрос

Синхронный код скрипта закончился, стек пуст. В очереди задач лежат два таймера, в очереди микрозадач три колбэка промисов. Что произойдёт дальше?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сначала все три микрозадачи, затем (может, после отрисовки) первый таймер. Запуск скрипта сам является задачей.

Варианты ответа

  1. Выполнится первый таймер, затем все три микрозадачи, затем второй таймер
  2. Сначала все три микрозадачи, затем (может, после отрисовки) первый таймерправильный ответ
  3. Выполнятся оба таймера подряд, а после них все накопившиеся микрозадачи
  4. Колбэки выполнятся в порядке регистрации, независимо от того, таймер это или промис

Разбор

Запуск скрипта сам является задачей. После неё event loop опустошает очередь микрозадач целиком, потом может отрисовать кадр, и только затем берёт следующую задачу (первый таймер). После каждой задачи снова выполняются все микрозадачи. Таймер не может обогнать уже готовые микрозадачи, поэтому первый и третий варианты неверны. Порядок регистрации важен только внутри одной очереди.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме