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:
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
Cài đặt module node-schedule
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
Okay, Done!
Download code ví dụ trên tại đây.
References: