2017-01-20 6 views
1

я сделал что-то вродеКак я могу запускать код ежечасно с помощью JS?

setInterval(function() { 
    console.log("!"); 
    }, 1000 * 60 * 60); 

Я хочу запустить console.log каждый час, но код не работает, как я хочу.

Предположим, что я запустил код в 1:30, затем он запустил console.log в 2:30. но то, что я хочу сделать, это запустить код каждый час. как 1:00, 2:00, 3:00.

Есть ли способ сделать это? Спасибо!

+1

Возможный дубликат [JavaScript: как сделать что-то каждый час?] (Http://stackoverflow.com/questions/12309019/javascript-how-to-do-something-every-full-hour) – Xufox

+0

@Xufox Есть ли способ сделать это, используя moment.js? – yolohoam

+0

использовать узел-cron для этого. http://stackoverflow.com/questions/20499225/i-need-a-nodejs-scheduler-that-allows-for-tasks-at-different-intervals – JavaEvgen

ответ

1

Это следует сделать это:

let millisPerHour = 60 * 60 * 1000; // use 5 * 1000 (every 5 seconds) for testing 
 
let millisPastTheHour = Date.now() % millisPerHour; 
 
let millisToTheHour = millisPerHour - millisPastTheHour; 
 

 
let fn = function() { 
 
    console.log("Running at " + new Date()); 
 
} 
 

 
setTimeout(function() { 
 
    fn(); 
 
    
 
    setInterval(function() { 
 
    fn(); 
 
    }, millisPerHour); 
 
}, millisToTheHour);

Я использую комбинацию setTimeout() и setInterval(). Сначала я вычисляю количество миллисекунд до следующего часа (millisToTheHour), затем я использую таймаут для выполнения функции и запускаю интервал, который будет продолжать выполнять его каждый час.

Смежные вопросы