Выбор ответа Junior Event loop спрашивают часто обновлено
Что выполняется после синхронного кода
Вопрос
Синхронный код скрипта закончился, стек пуст. В очереди задач лежат два таймера, в очереди микрозадач три колбэка промисов. Что произойдёт дальше?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сначала все три микрозадачи, затем (может, после отрисовки) первый таймер. Запуск скрипта сам является задачей.
Варианты ответа
- Выполнится первый таймер, затем все три микрозадачи, затем второй таймер
- Сначала все три микрозадачи, затем (может, после отрисовки) первый таймерправильный ответ
- Выполнятся оба таймера подряд, а после них все накопившиеся микрозадачи
- Колбэки выполнятся в порядке регистрации, независимо от того, таймер это или промис
Разбор
Запуск скрипта сам является задачей. После неё event loop опустошает очередь микрозадач целиком, потом может отрисовать кадр, и только затем берёт следующую задачу (первый таймер). После каждой задачи снова выполняются все микрозадачи. Таймер не может обогнать уже готовые микрозадачи, поэтому первый и третий варианты неверны. Порядок регистрации важен только внутри одной очереди.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.