我需要每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();
})
}
答案 0 :(得分:0)
可能axios不会根据您的需要提供任何特定的api,但是您可以创建一个标志,该标志在使axios.get()之前打开并在获取响应时重置。在cron作业中如果标记为on,则跳过您的任务,否则调用(),示例:
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();
})
}