Ваш console.log('promise')
должен ждать, пока ваш fetch().then()
не будет завершен, что включает сетевую операцию с другим хостом (и, следовательно, ненулевое время).
Ваш setTimeout()
должен только ждать, пока не вернется sampleFunction()
и вы не вернетесь в очередь событий.Таким образом, поскольку fetch().then()
неблокирует и занимает ненулевое количество времени, когда вы впервые вернетесь в очередь событий, только setTimeout()
готов к работе.Работа в сети по-прежнему будет выполняться в фоновом режиме.
Итак, это не вопрос определения приоритетов.Это вопрос выполнения заказа.setTimeout()
вставляет событие завершения в очередь событий задолго до того, как обещание fetch()
разрешено.
Возможно, вы не осознавали, что fetch()
неблокирует, и вызов его просто инициирует операцию ипосле этого выполнение вашего кода продолжается?
В консоли вы должны увидеть:
end
timeout done
promise
Пока ваш fetch()
не содержит ошибок.