I Shar

I Shar

мир глазами веб-разработчика

JavaScript: timeout или resolve

что быстрее: setTimeout без аргумента или Promise.resolve

I Shar

время чтения 1 мин.

Photo by Barnabas Hertelendy on Unsplash

Известно, что и функция setTimeout() и метод Promise.resolve() являются асинхронными. Это означает, что код и функции и метода будет выполнен только после освобождение стека, то есть, когда в основном потоке JavaScript не останется неисполненных операций.

setTimeout(() => console.log("Timeout"), 0);
Promise.resolve("Resolve").then(console.log);

Какая часть кода будет выполнена в первую очередь: функция setTimeout() или, все-таки, метод Promise.resolve()?

setTimeout() и Promise.resolve() отличаются тем, что Promise.resolve() планирует микрозадачи, а setTimeout() планирует макрозадачи. Микрозадачи обладают большим приоритетом по сравнению с макрозадачами, поэтому Promise.resolve() будет выполнен раньше, чем setTimeout().

Таким образом, в консоли сначала появится сообщение Resolve, и лишь после него появится сообщение Timeout.


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.