Как сделать с помощью промиса так, чтобы вывелось сначала 1 а потом 2 в консоле?


console.log(2);

setTimeout(() => {
 console.log(1)
}, 2000);

Ответы (1 шт):

Автор решения: egor.bokov

Почитайте про работу eventLoop в браузере и ответите сами себе на вопрос. Первый вызов попадает в основной стэк, в то время как setTimeout() помещается в callback queue И только после того как стэк очистится от выполнения, туда начнут попадать инструкции из callback queue.

Поэтому даже если вы укажете 0ms во времени исполнения setTimeout() - он вс ё равно попадает в очередь и будет ждать опустошения стека

Так что, есть вариант использовать промисы, либо аналогичным образом первый вызов обернуть в setTimeout();

→ Ссылка