node-schedule文档翻译

英文文档地址:https://www.npmjs.com/package/node-schedule

项目github地址:https://github.com/node-schedule/node-schedule

水平有限,部分翻译可能存在错误,之后我会陆续在使用中更正,同时也使语句更加通顺,有兴趣的孩子将就看。

Overview概述

Node Schedule是基于时间的调度,而不是基于时间间隔的调度。虽然你可以很轻松的使用Node Schedule做你想做的事,但是如果你仅仅是想做例如“每5分钟运行一次这个函数”,setInterval更容易使用,并且更合适。但是如果你想“在每个月的第三个周二那天的每个小时的20分钟和50分钟运行这个函数”,你会发现Node Schedule更加符合你的需要。此外,Node Schedule不同于true cron,Node Schedule有windows版本支持,因为node runtime已经得到了充分的支持。

Jobs and Schedule任务和调度

在 Node Schedule中,每一个调度的任务都由一个Job 对象表示,你可以手动创建一个任务,然后使用schedule()方法应用计划,或者应用更加简便的方法scheduleJob(),就像下面的demo一样。

Job对象是一个EventEmitter对象(事件驱动),每次运行会发送一个事件。

它们还会在每次调度运行时发出调度事件,并在执行调用之前取消事件(两个事件都会接收JavaScript日期对象作为参数),请注意,任务会立即计划,所以如果你使用scheduleJob的简便方法,你会错过第一个计划的任务,

Cron-style Schedule

Cron格式包括:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

Cron格式的例子:

var schedule=require("node-schedule");
var j=schedule.scheduleJob("42 * * * *".function(){
        console.log("The answer to life, the universe, and everything!")
} )
var j=schedule.scheduleJob("0 17 * 0,4-6",function(){
        console.log9("Today is recognized by Rebecca Black!");
})

Unsupported Cron Features

目前,不支持W(最近的工作日),L(月/星期的最后一天)和#(该月的第n个工作日),其他常用的cron的功能支持得很好

cron-parser用于解析crontab指令。

Date-based Schedule基于日期的调度

比如你特别想要一个函数在2012年12月21日上午5:30执行。记住,在JavaScript中0代表1月,11代表12月

var schedule = require("node-schedule");
var date = new Date(2012, 11,  21, 5, 30, 0);
var j=schedule.scheduleJob(date,function(){
        console.log("The world is going to end today");
}

你可以使用cancel()方法取消任务

j.cancel();

在将来使用现在的数据你可以使用绑定:

var schedule= require("node-schedule");
var date = new Date(2012, 11, 21, 5, 30, 0);
var x = "Tada!";
var j = schedule.schedule(date,function(y){
        console.log(y);
}).bind(null,x);
x = "Changing Data"; 

当计划任务运行的时候,将会打印“Tada!”而不是“Changing Data”, 尽管x已经在计划之后立即被改变了

Recurrence Rule Schedule

你可以设置特定的重复规则,当一个任务需要重复的时候,例如,考虑这个规则,一小时后每小时的42分钟时执行这个函数。

var schedule = require("node-shedule");
var rule = new schedule.RecurrenceRule();
rule.minute = 42;

var j = schedule.scheduleJob(rule, function(){
        console.log("The answer to life, the universe, and everything");
})

你也可以用指定可接受值的数组和Range对象通过可选的步骤参数来指定开始和结束值的范围,例如以下将在星期四、星期五、星期六和星期天的5点打印一条信息:

var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0,new schedule(4,6)];
rule.hour = 17;
rule.minute = 0;

var j = schedule.scheduleJob(rule, function(){
        console.log("Today is orcognized by Rebecca Black!");
})

注意:值得注意的是,循环规则组件的默认值是Null(秒除外,为了熟悉cron,它为0)。如果我们没有明确地将分钟设置为0,则该消息可能将在下午5:00,下午5:01......下午5:59被打印,这可能不是你想要的。

Object Literal Syntax对象字面量语法

为了更简便一些,Node-schedule还支持对象字面量语法,就像下面这个例子一样,将在每个周日的下午2:30打印一条信息

var j = schedule.scheduleJob({hour:14, minute:30, dayOfWeek:0},function(){
        console.log("Time for tea!");
})

最后是一个广告贴,最近新开了一个分享技术的公众号,欢迎大家关注

node-schedule文档翻译_第1张图片

你可能感兴趣的:(node-schedule文档翻译)