Sobes.tech
Middle
31

setTimeout, Promise, then, catch, finally және әртүрлі синхронды шақырулармен код үшін консоль шығу тәртібін анықтаңыз (Event Loop тапсырмасы).

Сұралған компаниялар
Mayflower

AI-дан жауап

sobes.tech AI

В JavaScript порядок вывода в консоль при использовании setTimeout, Promise, then, catch, finally и синхронных вызовов определяется очередями Event Loop:

  1. Сначала выполняется весь синхронный код.
  2. Затем выполняются микротаски (microtasks): обработчики Promise (then, catch, finally).
  3. После микротасок выполняются макротаски (macrotasks): setTimeout, setInterval и другие.

Пример:

console.log('start');

setTimeout(() => console.log('timeout'), 0);

Promise.resolve()
  .then(() => console.log('promise then'))
  .catch(() => console.log('promise catch'))
  .finally(() => console.log('promise finally'));

console.log('end');

Вывод будет:

start
end
promise then
promise finally
timeout

Объяснение:

  • "start" и "end" — синхронные вызовы.
  • then и finally — микротаски, выполняются после синхронного кода.
  • setTimeout — макротаска, выполняется после микротасок.

Таким образом, при анализе кода с такими конструкциями нужно помнить, что микротаски имеют приоритет над макротасками, а синхронный код выполняется первым.