ホームページ > ウェブフロントエンド > jsチュートリアル > NodeJs でスケジュールされたタスクを実装する方法 (詳細なチュートリアル)

NodeJs でスケジュールされたタスクを実装する方法 (詳細なチュートリアル)

亚连
リリース: 2018-06-22 17:02:38
オリジナル
2788 人が閲覧しました

この記事では、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アプレットでオーディオコンポーネントを使用する方法

vueでaxiosセカンダリカプセル化を実装する方法

使い方 上下スクロールアナウンスをjsで実装する方法

以上がNodeJs でスケジュールされたタスクを実装する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート