Settimeout VS Promise. Кто первый??

setTimeout(() => alert("timeout"));

Promise.resolve()
  .then(() => alert("promise"));


результат: promise, timeout
Но почему promise выполняется до setTimeout?? Ведь setTimeout попадает в event loop первым, только потом промис
  • Вопрос задан
  • 1745 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Правильный ответ: в спецификации языка это не описано (т.к. там нет setTimeout).
Так что зависит от реализации. В частности, пока в браузеры не завезли настоящих промизов их как раз эмулировали через setTimeout и в этом случае первым был бы alert('timeout')

Поэтому нельзя закладываться на порядок выполнения разных асинхронных операций. Единственная гарантия которая у вас есть, это что они выполнятся после всех текущих синхронных действий.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы