Подтвердить что ты не робот

Выполнение функции ежедневной полночь

walk.on('dir', function (dir, stat) {
    uploadDir.push(dir);
});

Я использую Node, и мне нужно, чтобы эта функция выполнялась каждый день в полночь, это возможно?

4b9b3361

Ответ 1

Я полагаю, пакет node -класса будет отвечать вашим потребностям. Как правило, для планирования и выполнения задач сервера требуется так называемый cron.

С node -schedule:

import schedule from 'node-schedule'

schedule.scheduleJob('0 0 * * *', () => { ... }) // run everyday at midnight

Ответ 2

Для node-schedule существует пакет node.

Вы можете сделать что-то вроде этого:

var j = schedule.scheduleJob({hour: 00, minute: 00}, function(){
    walk.on('dir', function (dir, stat) {
       uploadDir.push(dir);
    });
});

Для получения дополнительной информации см. здесь

Ответ 3

Я использую следующий код:

function resetAtMidnight() {
    var now = new Date();
    var night = new Date(
        now.getFullYear(),
        now.getMonth(),
        now.getDate() + 1, // the next day, ...
        0, 0, 0 // ...at 00:00:00 hours
    );
    var msToMidnight = night.getTime() - now.getTime();

    setTimeout(function() {
        reset();              //      <-- This is the function being called at midnight.
        resetAtMidnight();    //      Then, reset again next midnight.
    }, msToMidnight);
}

Я думаю, что есть законные варианты использования для запуска функции в полночь. Например, в моем случае у меня есть ежедневная статистика, отображаемая на веб-сайте. Эти статистические данные должны быть reset, если веб-сайт будет открыт в полночь.

Кроме того, выдаются кредиты этим.

Ответ 4

Является ли это частью какого-то другого долговременного процесса? Это действительно нужно? Если бы это был я, я бы просто написал быстрый запуск script, используйте обычный старый cron, чтобы запланировать его, а затем, когда процесс завершится, завершите его.

Иногда бывает целесообразно, чтобы эти виды запланированных задач были встроены в другой долговременный процесс, который выполнял другие вещи (я сделал это сам), и в этих случаях библиотеки, упомянутые в других ответах, являются вашими лучше всего, или вы всегда можете написать цикл setTimeout() или setInterval(), чтобы проверить время для вас и запустить ваш процесс, когда время совпадает. Но для большинства сценариев отдельный script и отдельный процесс, инициированный cron, - это то, что вы действительно после.