npm 包 cogsworth-scheduler 使用教程

阅读时长 6 分钟读完

简介

Cogsworth-scheduler 是一个基于 Node.js 的任务调度库。它提供了简单易用的 API,允许开发者定义任务和调度规则,并自动执行任务。

Cogsworth-scheduler 使得我们可以轻松地实现循环性任务,比如定时备份、定时清洗数据等,同时也支持一次性任务,如发送邮件、生成报告等。

本篇文章会为大家介绍 Cogsworth-scheduler 的基础使用,包括安装、定义任务、定义调度规则以及启动调度器等。

安装

在开始使用 Cogsworth-scheduler 之前,需要安装该 npm 包。

在终端执行以下命令:

安装完成后,在项目中引入该库。可以使用 ES6 使用 import,也可以使用 CommonJS 使用 require

定义任务

Cogsworth-scheduler 中的任务被定义为一个函数。函数可以是异步的(async)或者同步的。该函数会在调度器启动后被执行,且可以接收任意数量的参数。

例如,我们定义一个任务来计算两个数的和:

定义调度规则

Cogsworth-scheduler 通过调度规则来定义任务的执行时间。调度规则是一个具有以下字段的对象:

  • second: 可选。秒数,0-59。默认为 null
  • minute: 可选。分钟数,0-59。默认为 null
  • hour: 可选。小时数,0-23。默认为 null
  • dayOfMonth: 可选。一个月中的某一天,1-31。默认为 null
  • month: 可选。月份,0-11(0 表示一月)。默认为 null
  • dayOfWeek: 可选。星期几,0-6(0 表示星期日)。默认为 null

例如,我们定义一个调度规则,每分钟执行一次:

我们还可以定义一些其他的调度规则,如下:

  • hour: '4':每天早上 4 点执行。
  • dayOfWeek: '2,4':每周二和周四执行。
  • dayOfMonth: '10,20':每个月的第 10 天和 20 天执行。

除此以外,Cogsworth-scheduler 还支持更复杂的调度规则,如每两周、每季度等等。

启动调度器

在完成任务和调度规则的定义后,我们需要使用 Cogsworth 类来启动调度器并让它开始执行任务。

我们首先需要创建一个新的调度器实例,并在构造函数中传入任务和调度规则:

接下来,我们需要调用 start() 方法来启动调度器:

调度器启动后,它会按照调度规则自动执行任务,直到调度器被停止。

例如,我们定义的任务每分钟执行一次,我们可以在终端中看到每分钟输出一次计算结果。

停止调度器

如果需要停止调度器,可以通过调用 stop() 方法来实现:

这样,调度器就会停止执行任务,同时该实例也可以被垃圾回收。

示例代码

下面是一个完整的示例代码,用于将邮箱中收到的邮件保存到本地文件系统中:

-- -------------------- ---- -------
------ - --------- - ---- ----------------------
------ -------- ---- -----------
------ - ----------------- - ---- -----
------ - --------- - ---- -------
------ - -------- - ---- ---------
------ - ------------ - ---- -------------

----- ---------- - --------------------------
  ------ --------------
  ------- --------------
---

----- -------- -------------------- -
  ----- ------------ - ----------------------------- ----------------------------
  ----- --------------- - --------------------

  ----- ---------------------------------------- --------------
-

----- -------- ---------------- -
  --------------------- ---- ---- -------- ------------------

  ----- ------ - ----- --- ----------------- -- -
    ----------------------- --- ---- -- ---- --- ---- -- --- ---- ------- ------- -------- -- -
      -------------- --- -----
    ---
  ---

  -- -------- -
    ----- ---------------------
    ----------------- ----- ------------ -- --- ---- ----------
  -
-

----- ---- - - ------- --- --
----- --------- - --- --------------- -- -- -
  ----- - ---------- - - -----------------------
  ----- ------ - --- ------------
    ----- -
      ----- --------------------
      --------- ----------------
      ----- -------------------
      ----- ----
      ---- ----
    -
  ---

  ----- -----------------

  ----- ----- - ----- ------------------------------
  ---------------- ---- ----------------------- -------- -- ---- --------

  --- ---- - - -- - -- --------------------- ---- -
    ----- ------- - ----- -------------------
    ----- ---- - ----- ----------------------
    ----- -----------------
  -

  ----- -------------
-- ------

----------------- -------- ------- -------------
------------------

以上代码会启动一个周期性任务,每分钟检查一次 IMAP 邮箱中是否有新的邮件。如果有新的邮件,则会询问用户是否要将该封邮件保存到本地文件系统中。如果用户同意,则会将邮件保存为 EML 文件。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055d3e81e8991b448db04a

纠错
反馈