Если вы хотите, чтобы приложение узла запускало определенный фрагмент кода в определенное время, вы можете запустить setTimeout()
рекурсивный «цикл», который проверяет время каждые несколько миллисекунд.Если определенное время не прошло, обратный вызов setTimeout()
вызывает сам себя, и процесс начинается заново.Однако, если время истекло, выполните определенный блок кода и остановите цикл рекурсии.
const triggerTime = new Date(2019, 05, 05, 02, 30, 0, 0)
function otherCodeToRun() {
// do something...
}
function wait() {
setTimeout(function() {
const currentTime = new Date()
if (currentTime >= triggerTime) {
otherCodeToRun() // not calling wait ends the recursive loop
} else {
wait() // recursively call wait after the timeout completes
}
}, 1000) // wait 1 second
}
Теоретически, эта функция otherCodeToRun()
может вызвать другой процесс узла для запуска другого файла или загрузитьваш другой файл как модуль и запустите его таким образом.
Также стоит отметить, что вы можете выполнить эту проверку внутри цикла while
, однако приложение будет полностью заблокировано, то есть оно будет не отвечать на запросы и можетзанять много циклов процессора.Подход setTimeout дает вашему приложению возможность уступить другим процессам, позволяя вам регистрировать вывод на консоль, например, если вы хотите отобразить обратный отсчет.