TGViewer
DНЕВНИК web-программиста DНЕВНИК web-программиста @webprogrammerdiary · 2.26K subscribers
Post #381 3.21K
✅ Правильный ответ: B

Мы вызываем функцию setTimeout первой. Тем не менее, она выводится в консоль последней

Это происходит из-за того, что в браузерах у нас есть не только рантайм движок, но и WebAPI. WebAPI предоставляет нам функцию setTimeout и много других возможностей. Например, DOM.

После того как коллбек отправлен в WebAPI, функция setTimeout (но не коллбек!) вынимается из стека.

Теперь вызывается foo, и "First" выводится в консоль.

foo достается из стека, и вызывается baz. "Third" выводится в консоль.

WebAPI не может добавлять содержимое в стек когда захочет. Вместо этого он отправляет коллбек-функцию в так называемую очередь.

Здесь на сцену выходит цикл событий (event loop). Event loop проверяет стек и очередь задач. Если стек пустой, то он берет первый элемент из очереди и отправляет его в стек.

Вызывается bar, в консоль выводится "Second" и эта функция достается из стека.
More from @webprogrammerdiary
  1. Jan 19, 2023Всем привет! Чёт я подзабросил своё хобби - иногда ходить на собеседования, чтобы поддержи…
  2. Dec 31, 2022Всем привет! Хочу поздравить с Новым годом и пожелать всем одного - окончания войны и здор…
  3. Aug 5, 2022Всем привет! Подкину немного мотивации в канал - по работе переезжаю в Калифорнию! Если вы…
  4. Jul 18, 2022Всем привет! Коллеги, будьте осторожны, у кого счета в Тинькофф банке - после смены собств…
  5. Jun 2, 2022Post #1077
  6. Jun 2, 2022Всем привет! Сегодня получил вот такое письмо - Upwork приостановил работу с аккаунтами из…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →