Сброс таймера для уже запущенного задания cron-node - PullRequest
0 голосов
/ 26 декабря 2018

Мне нужно запускать планировщик каждые 5 минут, который будет выполнять несколько http-вызовов.После первого раза я хочу запустить следующий таймер, только когда все вызовы http завершены.Как я могу это сделать, не могу найти решение по документации 'node-cron'.Вот как я пытаюсь это сделать.

const CronJob = require('cron').CronJob;
const axios = require("axios");

const job = new CronJob('* */5 * * * *', function() {
    console.log(new Date());
  calls();
},null,true);


function calls(){
  job.stop();
  axios.get("url").then((res)=>{
    console.log(res.data);
    job.start();
  })
}

1 Ответ

0 голосов
/ 26 декабря 2018

, вероятно, axios не дает никаких конкретных API, в соответствии с вашими потребностями, но вы можете создать флаг, который включается перед выполнением axios.get () и сбрасывается при получении ответа.Внутри задания cron Пропустите вашу задачу, если флаг включен, иначе call (), пример:

const CronJob = require('cron').CronJob;
const axios = require("axios");
var isRunning = false;
const job = new CronJob('* */5 * * * *', function() {
  console.log(new Date());
  if(!isRunning) calls();
},null,true);


function calls(){
  job.stop();
  isRunning = true;
  axios.get("url").then((res)=>{
    isRunning = false
    console.log(res.data);
    job.start();
  })
}
...