1.0.3 • Published 1 year ago
aiv367-task v1.0.3
aiv367-task
介绍
javascript 任务队列模块, 支持分组任务。该模块适用于需要批量或按一定顺序执行一些方法。如接口请求等。
Gitee
https://gitee.com/aiv367/aiv367-task
示例
http://aiv367.gitee.io/aiv367-task/demo
安装
npm i aiv367-task --save
使用
import task from 'aiv367-task';
// 向默认组添加一个任务, 返回 Promise
task.add((resolve, reject) => {
// 模拟异步
setTimeout(() => {
// 执行代码
// 任务结束后,调用 resolve() 或者 reject()
resolve('ok');
}, 1000);
}).then((res) => {
//...
});
// 注:task 默认内部建立了一个 default 组,默认参数是 { allowTasks: 1, autoRun: true }
// 创建或者修改一个组,allowTasks: 是同时执行的任务数, autoRun: 向组添加任务时是否立即运行任务队列
task.setGroup('group2', { allowTasks: 5, autoRun: false });
// 向 group2 组添加一个任务
task.add((resolve, reject) => {
//...
resolve('ok');
}, 'group2');
// 如果一个组参数 autoRun = false 时,需要手动调用 task.start('groupName'), 开始执行任务队列
// 上面的 group2 autoRun 就是 false,需要手动调用 start 开始执行任务队列
task.start('group2');
// 相对应的停止一个任务队列
task.stop('group2');
// 获得一个组信息
task.getGroup('group2');
// 事件
// task 支持下列事件 add, start, end, error, progress
// 绑定事件
task.on('progress', (type, data) => {
console.log(`progress: ${data.group.name}, ${parseInt(data.progress.percent * 100)}%`);
});
// 批量绑定事件
task.on('add start end error progress', (type, data) => {
console.log(type, data);
});
// 移除事件
task.off('progress'); // 移除全部
task.off('start end'); // 移除多个全部
task.off('progress', fn); // 移除指定
// 通过设置下列参数,可以在任务执行后,保留任务内容,默认是自动移除
task.config.autoRemovefinished = false;