Node.js在条件语句中调度函数

时间:2016-07-21 06:35:15

标签: javascript node.js cron

我正在开发Node.js上的一个项目。我想在自上一个代码执行以来等待五分钟后执行一些条件代码部分。我只需要它一次运行(不是每天或......)。其余的代码将接管,但当它在5分钟后,将执行。我可以做到这一点吗?

编辑:Abdennour TOUMI的代码部分有效。但他用变量表示分钟的方式并不适用于我。所以我根据模块页面中的example进行了以下编辑。

            var schedule = require('node-schedule');

            var AFTER_5_MIN=new Date(new Date(new Date().getTime() + 5*60000))
            var date = new Date(AFTER_5_MIN);
            var j = schedule.scheduleJob(date, function() {
                if(condition1){
                     // Runned once --> Thus, you need to cancel it
                     // code here, than code to run once   
                    j.cancel();
                }else{

                    //it will be repeated
                 }
            });

2 个答案:

答案 0 :(得分:2)

你的错误是使用5个字段&右边是6个字段。

  • * 0 * * * * - >在该小时的0分钟的每小时。

要在5分钟后开始,您可以计算5分钟后的小时数:

     var schedule = require('node-schedule');


     var AFTER_5_MIN=new Date(new Date(new Date().getTime() + 5*60000)).getMinutes();   

     var j = schedule.scheduleJob(`* ${AFTER_5_MIN} * * * *`, function() {
                    if(condition1){
                         // Runned once --> Thus, you need to cancel it
                         // code here, than code to run once   
                        j.cancel();
                    }else{

                        //it will be repeated
                     }
                });

答案 1 :(得分:1)

你有什么理由不能使用setTimeout()吗?

const WAIT_TIME = (60 * 5) * 1000; //5 Minutes

var timer = setTimeout(function(){
  console.log('Cron job works!')
}, WAIT_TIME);

/*
 * If conditions change in this five minutes and you need to cancel executing
 * the callback above, you can clear the timer
 * clearTimeout(timer);
 */