Code ví dụ Node.js tạo lịch với module node-schedule

Code ví dụ Node.js tạo lịch với module node-schedule.

(Xem thêm: Tự học Node.js qua ví dụ)

Module node schedule

Node schedule là một module dùng để đặt lịch chạy cho một chức năng nào đó, ví dụ 5 giờ sáng hàng ngày chạy chức năng báo thức, cứ 7h sáng chủ nhật hàng tuần gửi thông báo…

Cài đặt module node-schedule:

npm install node-schedule

Include module node-schedule vào project

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

Ví dụ:

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

var cronExpress = '*/5 * * * * * *';

var j = schedule.scheduleJob(cronExpress, function(fireDate){
  console.log('running job!');
  console.log(fireDate)
});
  • function scheduleJob thực hiện chạy function theo lịch
  • cronExpress là cron expression thực hiện định nghĩa lịch chạy (chạy vào thời điểm nào, sau bao lâu thì lặp lại…)
  • Tham số fireDate là thời điểm function được chạy.

Cron Expression, Cron-style trong module node-schedule

Trong ví dụ trên các bạn thấy var cronExpress = '*/5 * * * * * *'; tức là cứ 5 giây thì lặp lại một lần.

Cấu trúc, cú pháp của cron expression:

Code ví dụ Node.js tạo lịch với module node-schedule

Dấu * biểu thị có thể nhận bất kì giá trị nào, dấu / thể hiện lặp lại

Ví dụ:

  • Cứ 5 giây lặp lại 1 lần:*/5 * * * * * *
  • Cứ 5 giờ hàng ngày thì lặp lại: 0 0 5 * * *
  • Cứ 8h 5 phút từ thứ 2 đến thứ 6 thì lặp lại: 0 5 8 * * MON-FRI
  • Từ phút thứ 2 đến phút thứ 10, cứ 2 phút lặp lại 1 lần: * 2-10/2 * * * * *

Date-based Scheduling

Ngoài cách dùng cron expression ta có thể thay bằng date để chỉ rõ thời gian chạy.

Ví dụ:

var schedule = require('node-schedule');
var date = new Date(2018, 9, 11, 12, 0, 0);
 
 console.log(date);
var j = schedule.scheduleJob(date, function(){
  console.log('hello world.');
});

Đoạn code trên thực hiện log ra dòng chữ 'hello world.' vào lúc 12:00:00 ngày 11/10/2018.

(Trong đối tượng date, tháng tính từ 0 nên ở vị trí tháng mình để là 9 tức là tương ứng với tháng 10).

Recurrence Rule Scheduling

Một cách khác để định nghĩa lịch là sử dụng recurrence

Ví dụ: cứ vào phút thứ 10 thì in ra dòng chữ 'hell world'

var schedule = require('node-schedule');
 
var rule = new schedule.RecurrenceRule();
rule.minute = 10;
 
var j = schedule.scheduleJob(rule, function(){
  console.log('hello world');
});

Object Literal Syntax

Bạn có thể tạo đối tượng với các thuộc tính (second, minute, hour, date, month, year, dayOfWeek) để chỉ rõ thời giạn chạy

Ví dụ cứ vào 8h:30 hàng ngày thì chạy job.

var j = schedule.scheduleJob({hour: 8, minute: 30}, function(){
  console.log('Time for work!');
});

Set StartTime and EndTime

Bạn có thể thêm thời gian bắt đầu vào thời gian kết thúc vào method scheduleJob

Ví dụ từ 12:00:00 – 12:01:00 11/10/2018 cứ 1s thì lặp lại 1 lần

let startTime = new Date(2018, 9, 11, 12, 0, 0);
let endTime = new Date(2018, 9, 11, 12, 1, 0);
var j = schedule.scheduleJob({ start: startTime, end: endTime, rule: '*/1 * * * * *' }, function(){
  console.log('Time for tea!');
});

Code ví dụ

Tạo project node.js với các thông tin mặc định

tạo lịch trong node.js

Cài đặt module node-schedule

tạo schedule trong node.js

Tạo file index.js

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

var cronExpress = '*/5 * * * * * *';

var j = schedule.scheduleJob(cronExpress, function(fireDate){
  console.log('running job!');
  console.log(fireDate)
});

Chạy file index.js

module tạo schedule, lịch trong node.js

 

Okay, Done!

Download code ví dụ trên tại đây.

References:

https://www.npmjs.com/package/node-schedule

stackjava.com