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.
Спасибо за внимание.
