Node Cron Выполнить определенную функцию - PullRequest
0 голосов
/ 18 октября 2019

Я использую node-cron для планирования в моем экспресс-бэкэнде, вот пример. Я установил свою конфигурацию планирования в index.js и разработал функцию, которая будет выполняться cron в training.js

index.js:

const training = require('./training');

const DAILY = 'DAILY';
const HOURLY = 'HOURLY';

function getCronSchedule(when){
    switch (when) {
        case DAILY : return "55 22 * * *";
        case HOURLY : return "10 * * * *";
    }
}
function initJob()
{
    training.initJob(getCronSchedule(HOURLY));
    training.initJob(getCronSchedule(DAILY));
}

module.exports={
    initJob
}

training.js :

function initJob(when)
{
    console.log('This is daily scheduling');
    console.log('This is hourly scheduling');
}

module.exports={
    initJob
}

В настоящее время:

This is daily scheduling
This is hourly scheduling

будет напечатано два разакаждый день, потому что он печатается на ежедневном и часовом графике.

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

Это ежедневное расписание , напечатанное на ежедневнойcron и,

Это почасовое планирование , напечатанное на почасовом кроне.

Как мне это сделать? Я не знаю, как сделать условие, потому что то, что я получил от param, только расписание cron.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

попробуйте следующий код, надеюсь, это поможет:

index.js

const training = require('./training');

const DAILY = 'DAILY';
const HOURLY = 'HOURLY';

function getCronSchedule(when){
    switch (when) {
        case DAILY : return "2 * * * *";
        case HOURLY : return "* * * * *";
    }
}
function initJob()
{
    training.initJob(getCronSchedule(HOURLY),HOURLY);
    training.initJob(getCronSchedule(DAILY),DAILY);
}

module.exports={
    initJob
}

initJob()

training.js

var cron = require('node-cron');
const DAILY = 'DAILY';
const HOURLY = 'HOURLY';

function initJob(when, name)
{   
  switch(name){
    case DAILY : cron.schedule(when, () => {
    console.log('This is daily scheduling');
  });
    case HOURLY : cron.schedule(when, () => {
    console.log('This is hourly scheduling');
  });

  }

}

module.exports={
    initJob
}

Надеюсь, это поможет.

0 голосов
/ 18 октября 2019

Из примеров node-cron ваш код должен выглядеть примерно так:

const cron = require('node-cron');

cron.schedule('55 22 * * *', () => {
  console.log('This is daily scheduling');
});

cron.schedule('55 22 * * *', () => {
  console.log('This is hourly scheduling');
});
...