Авторский канал о том, как стать программистом, когда вы даже не знаете, что это.
Много интересного и для других сфер - планирование, самоконтроль, различные лайфхаки и т.д.
Задачи @tasks_frontend
Обратная связь @WpdFeedbackBot
Сотрудничество @rezvanini
Post #381
3.21K
✅ Правильный ответ: B
Мы вызываем функцию setTimeout первой. Тем не менее, она выводится в консоль последней
Это происходит из-за того, что в браузерах у нас есть не только рантайм движок, но и WebAPI. WebAPI предоставляет нам функцию setTimeout и много других возможностей. Например, DOM.
После того как коллбек отправлен в WebAPI, функция setTimeout (но не коллбек!) вынимается из стека.
Теперь вызывается foo, и "First" выводится в консоль.
foo достается из стека, и вызывается baz. "Third" выводится в консоль.
WebAPI не может добавлять содержимое в стек когда захочет. Вместо этого он отправляет коллбек-функцию в так называемую очередь.
Здесь на сцену выходит цикл событий (event loop). Event loop проверяет стек и очередь задач. Если стек пустой, то он берет первый элемент из очереди и отправляет его в стек.
Вызывается bar, в консоль выводится "Second" и эта функция достается из стека.
Мы вызываем функцию setTimeout первой. Тем не менее, она выводится в консоль последней
Это происходит из-за того, что в браузерах у нас есть не только рантайм движок, но и WebAPI. WebAPI предоставляет нам функцию setTimeout и много других возможностей. Например, DOM.
После того как коллбек отправлен в WebAPI, функция setTimeout (но не коллбек!) вынимается из стека.
Теперь вызывается foo, и "First" выводится в консоль.
foo достается из стека, и вызывается baz. "Third" выводится в консоль.
WebAPI не может добавлять содержимое в стек когда захочет. Вместо этого он отправляет коллбек-функцию в так называемую очередь.
Здесь на сцену выходит цикл событий (event loop). Event loop проверяет стек и очередь задач. Если стек пустой, то он берет первый элемент из очереди и отправляет его в стек.
Вызывается bar, в консоль выводится "Second" и эта функция достается из стека.
