简介
base-task 是一个针对任务处理的工具包,能够帮助前端开发人员快速构建任务队列、执行多个任务并行或串行处理等功能。它适用于各种前端项目,例如网站构建、自动化测试等等。
安装
在终端中运行以下命令进行安装:
npm install base-task
快速上手
在代码中引入 base-task:
const BaseTask = require('base-task');
然后创建一个任务队列:
const taskQueue = new BaseTask();
接下来,添加一些任务到队列中:
taskQueue.addTask(task1); taskQueue.addTask(task2); // ...
其中,task1
和 task2
是你自己定义的任务函数。它们可以是同步或异步的函数,只要它们遵循 Node.js 的回调规范即可。比如:
-- -------------------- ---- ------- -------- --------------- - -- ---- ----------------- - -- ----------- ----------- - -------- --------------- - -- ---- ------------- -- - ----------------- - -- ----------- ----------- -- ------ -
最后,执行这个任务队列:
taskQueue.run((err, result) => { if (err) { console.error(err); } else { console.log('All tasks are done!'); } });
在这个例子中,我们定义了两个任务函数,一个同步的函数 task1
和一个异步的函数 task2
。然后将它们添加到任务队列中,并执行这个任务队列。
进阶使用
添加并行执行的任务
在上面的例子中,所有任务都是串行执行的。如果你需要异步执行多个任务,可以将它们添加到一个并行任务数组中:
-- -------------------- ---- ------- ----- ------------- - - ---------- -- - ------------- -- - --------------------- ---- - -- ----------- ----------- -- ------ -- ---------- -- - ------------- -- - --------------------- ---- - -- ----------- ----------- -- ------ - -- ------------------------------------------
在上面的例子中,我们定义了一个包含两个异步任务的并行任务数组,并将它们添加到任务队列中。
添加串行执行的任务
类似地,你也可以添加一些需要按顺序执行的任务到一个串行任务数组中:
-- -------------------- ---- ------- ----- ----------- - - ---------- -- - ------------------- ---- - -- ----------- ----------- -- ---------- -- - ------------- -- - ------------------- ---- - -- ----------- ----------- -- ------ - -- --------------------------------------
在这个例子中,我们定义了一个包含两个任务的串行任务数组,并将它们添加到任务队列中。
设置任务执行的最大并发数
默认情况下,任务队列中的任务最多同时执行一个。如果你需要设置最大并发数,可以这样做:
taskQueue.concurrency = 2;
在这个例子中,我们将最大并发数设置为 2,这意味着任务队列中最多同时执行两个任务。
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- -------- - --------------------- -------- --------------- - ----------------- - -- ----------- ----------- - -------- --------------- - ------------- -- - ----------------- - -- ----------- ----------- -- ------ - ----- ------------- - - ---------- -- - ------------- -- - --------------------- ---- - -- ----------- ----------- -- ------ -- ---------- -- - ------------- -- - --------------------- ---- - -- ----------- ----------- -- ------ - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------