Запускать функцию с заданным интервалом только в определенное время суток.

В настоящее время я запускаю функцию с регулярным интервалом круглосуточно.

setInterval( function(){ do_this(); } , 1000*60);

К сожалению, это не совсем то, что я хочу. Я хотел бы, чтобы эта функция запускалась с установленным регулярным интервалом только с утра 9:00 до 18:00. Функция не должна работать вне этих часов. Как это можно сделать в node.js? Есть ли удобные модули или функции для использования?

3 ответа

Решение

Вы можете просто проверить, находится ли текущее время в требуемом диапазоне времени или нет, и использовать его, чтобы решить, выполнять вашу функцию или нет.

setInterval( function(){ 
    var hour = new Date().getHours();
    if (hour >= 9 && hour < 18) {
        do_this(); 
    }
} , 1000*60);

Это будет запускать вашу функцию каждую минуту с 9:00 до 18:00.

Есть ли какая-то конкретная структура, с которой вы работаете?

Если мы настолько абстрактны, как вы, вы, скорее всего, захотите использовать что-то вроде cronjob. Для этого есть модуль: https://github.com/ncb000gt/node-cron

Шаблон для того, что вы хотите:

00 00 9-18 * * * - Это будет выполняться каждый час между 9-18 и ровно от 0 минут до 0 секунд.

Проверьте текущий час внутри вашего do_this функция.

function do_this(){
    var now = new Date();
    var currentHour = now.getHours();
    if(currentHour < 9 && currentHour > 18) return;
    //your code
}

setInterval( function(){ do_this(); } , 1000*60);
Другие вопросы по тегам