ホームページ > 記事 > ウェブフロントエンド > NodeJs でスケジュールされたタスクを実装する方法 (詳細なチュートリアル)
この記事では、NodeJs でスケジュールされたタスクを実装するためのサンプル コードを主に紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう
プロジェクト内に毎日0時に実行される関数がありますが、当初はsetIntervalを使用して実装したかったのですが、このような需要は今後も続くと感じています。将来的には、自分で作成するのはあまり拡張性が高くないかもしれません。
検索した結果、node-schedule パッケージを見つけました。
次に使用方法を記録します
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]と設定するだけです。
rule は、秒、分、時、日付、曜日、月、年などの値の設定をサポートします
同様に:
1 秒あたりの実行数は、rule.second =[0,1,2,3... 59] です。
毎分0秒に実行はrule.second =0
毎時30分に実行はrule.minut=30;rule.秒=0;
毎日0時に実行はrule.hour=0;rule .分 =0 ;ルール.秒 =0;
....
毎月 1 日の 10 時は、ルール.日付 =1;ルール.時間 =10;ルール.分 =0;ルール.秒 = 0;
1 毎週、3 と 5 の 0 時と 12 時は、rule.dayOfWeek =[1,3,5];rule.hour =[0,12];rule. minutes =0;rule .秒 =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:00に実行
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: 毎時実行2番目
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); });
上記は皆さんのためにまとめたものです。将来皆さんのお役に立てれば幸いです。
関連記事:
WeChatアプレットでビデオコンポーネントを使用してビデオを再生する方法
WeChatアプレットでオーディオコンポーネントを使用する方法
以上がNodeJs でスケジュールされたタスクを実装する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。