JavaScript: timeout или resolve
что быстрее: setTimeout без аргумента или Promise.resolve
Известно, что и функция 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
.
Спасибо за внимание.