2016-07-21 11 views
1

Node.jsでプロジェクトを進めています。最後のコードから5分待ってから条件コード部分を実行したい。私はそれを一度だけ実行する必要があります(毎日でもなく...)。コードの残りの部分が引き継がれますが、5分刻むと実行されます。これを達成できますか?Node.js条件文のスケジューリング関数

編集: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

あなたの間違いは5フィールド&の間違いです。右側は6フィールドです。

  • * 0 * * * * - >その時間の0分に1時間ごと。

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 
        } 
       }); 
+0

@unkown .. plz、今すぐチェックしてください。最初の引数の最後の星が間に合わない –

+0

ありがとう。私はもう一度それをテストしています。私は最初の "秒"フィールドはオプションだと思った。 https://www.npmjs.com/package/node-schedule – unknown

+0

こんにちは、Abdennour。変数として全体の時間パラメータを与えるようにコードを更新した場合は、素晴らしいことです。 – unknown

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); 
*/ 
+0

感謝。これは、5分まで、以下の機能をすべて停止しましたか?私は実行を継続したいが、5分後に囲まれたコードを取得して実行する。 – unknown