Если вы не знаете setTimeout
, значит, вы не понимаете цикл обработки событий в JS. Вот разговор , который вы действительно должны смотреть!
А пока я кратко объясню основы.
Вы знаете, что когда вы вызываете функцию, она будет выполнять каждую строку кода в своем теле во временном порядке, до тех пор, пока не достигнет возврата, не выдаст ошибку или не достигнет последней строки.
Когда одна из строк является вызовом setTimeout(myDelayedFn, 1000)
, вызов самого setTimeout выполняется в порядке времени. Он отправляет запрос в среду выполнения, сообщая SCHEDULE о вызове myDelayedFn
по крайней мере 1000 мс позже.
Не путайте термин request Я использовал здесь НЕ сетевой запрос. Вы можете думать об этом как о сигнале .
Поэтому setTimeout просто отправляет запрос на запланированную работу, но эта работа не выполняется. Выполнение myDelayedFn
выпадает из-за нехватки времени, так как это ЗАПЛАНИРОВАНО. Это также означает, что ваш обычный построчный порядок выполнения не прерывается (мы говорим, что он не блокирует выполнение). После отправки запроса выполнение продолжается до следующей строки в теле функции.
Это означает «нет», «да», «да» на ваши 3 вопроса.