CCA Prep

Урок 5.2Урок 19 з 24

Цикл подій

Given a scenario, use event loop and event monitor or determine loop outcomes.

Цикл подійВиконати синхроннийкодпоки стек викликів неспорожнієВиконати всімікрозадачіthen · await ·queueMicrotaskВиконати одну задачутаймер · подія ·повідомленняСторінка може перемальовуватися між задачами, але ніколи посеред задачі

Головне

  1. 1Спершу синхронний код виконується до кінця. Ніщо його не перериває — навіть таймер, якому вже час спрацювати.
  2. 2Потім виконуються всі мікрозадачі з черги: реакції промісів (then, catch, finally, код після await) і queueMicrotask, разом із мікрозадачами, які вони додають.
  3. 3Лише після цього запускається наступна задача: таймер, подія, повідомлення. Після кожної задачі черга мікрозадач знову виконується до кінця.
  4. 4setTimeout(fn, 0) означає «як задача, не раніше ніж через 0 мс»: такий колбек ніколи не випереджає мікрозадачі, що вже чекають у черзі.
  5. 5Функція-виконавець у new Promise і тіло асинхронної функції до першого await виконуються синхронно, у момент виклику.
Що перевіряє іспит із цієї теми

Формулювання з програми іспиту (англійською).

  • 5.2.K1The call stack, the task (macrotask) queue and the microtask queue
  • 5.2.K2Where callbacks go: promise reactions and queueMicrotask vs setTimeout, setInterval and events
  • 5.2.S1Determine the order in which a block of synchronous and asynchronous code logs

Закріпіть тему

Дайте відповідь на запитання за сценаріями з цієї теми. До кожного варіанта є розбір.

Тренування 5.2 · 12 запитань