プロジェクト内に毎日0時に実行する関数があり、当初はsetIntervalを使って実装したかったのですが、今後もこのような需要はありそうなので自分で書くと良いかもしれません。あまり拡張性がありません。 node-schedule パッケージを発見したので、この記事では NodeJs でスケジュールされたタスクを実装するためのサンプル コードを共有します。
次に使用方法を記録します
node-schedule は、新しいスケジュールジョブオブジェクトを作成することで常に特定のメソッドを実行します。
時間の値は次の表に示されています
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ [dayOfWeek]day of week (0 - 7) (0 or 7 is Sun) │ │ │ │ └───── [month]month (1 - 12) │ │ │ └────────── [date]day of month (1 - 31) │ │ └─────────────── [hour]hour (0 - 23) │ └──────────────────── [minute]minute (0 - 59) └───────────────────────── [second]second (0 - 59, OPTIONAL)
node-scheduleを使用して、指定された時間にメソッドを実行します
var schedule = require('node-schedule'); var date = new Date(2017, 11, 16, 16, 43, 0); var j = schedule.scheduleJob(date, function(){ console.log('现在时间:',new Date()); });
2017年12月16日16:43:00 , 現在時刻を出力します
時間間隔の実行方法を指定します
var rule = new schedule.RecurrenceRule(); rule.second = 10; var j = schedule.scheduleJob(rule, function(){ console.log('现在时间:',new Date()); });
これは秒数が10秒ごとに時刻を出力するものです。 10秒ごとに実行したい場合は、rule.second =[0,10,20,30,40,50]と設定するだけです。
ルールでサポートされている値は、秒、分、時、日付、曜日、月、年です
同様に:
1秒あたりの実行はrule.second =[0,1,2,3.. . ...59]
毎分0秒に実行はrule.second =0
毎時30分に実行はrule. minutes =30;rule.second =0;
毎日0時に実行はルール.hour =0;rule. minutes =0;rule.second =0;
....
毎月 1 日の 10 時は、rule.date =1;rule.hour =10;rule. minutes = 0;rule.sec =0;
月曜日、水曜日、金曜日の毎0時と12時は、rule.dayOfWeek =[1,3,5];rule.hour =[0,12];rule . minutes =0;rule.second =0;
.. ..
例
1: 時間を決定します
例: 2014年2月14日、15:40実行
var schedule = require("node-schedule"); var date = new Date(2014,2,14,15,40,0); var j = schedule.scheduleJob(date, function(){ console.log("执行任务"); });
タスクをキャンセルします
j.cancel();
2: 毎時固定時間
例: 毎時40分実行
var rule = new schedule.RecurrenceRule(); rule.minute = 40; var j = schedule.scheduleJob(rule, function(){ console.log("执行任务"); });
3: 特定の曜日の特定の時間に実行
例: 月曜から日曜まで20時に実行
var rule = new schedule.RecurrenceRule(); rule.dayOfWeek = [0, new schedule.Range(1, 6)]; rule.hour = 20; rule.minute = 0; var j = schedule.scheduleJob(rule, function(){ console.log("执行任务"); });
4: 毎秒実行
var rule = new schedule.RecurrenceRule(); var times = []; for(var i=1; i<60; i++){ times.push(i); } rule.second = times; var c=0; var j = schedule.scheduleJob(rule, function(){ c++; console.log(c); });
上記の内容はNodeJsでスケジュールされたタスクを実装するサンプルコードです、お役に立てれば幸いです。
関連する推奨事項:
PHP はスケジュールされたタスクのスケジュールされた実行をどのように実装しますか?
以上がスケジュールされたタスクを実装するための NodeJs サンプル コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。