# aiv367-task **Repository Path**: aiv367/aiv367-task ## Basic Information - **Project Name**: aiv367-task - **Description**: javascript 执行任务队列程序 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-24 - **Last Updated**: 2022-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Library ## README # aiv367-task #### 介绍 javascript 任务队列模块, 支持分组任务。该模块适用于需要批量或按一定顺序执行一些方法。如接口请求等。 #### Gitee [https://gitee.com/aiv367/aiv367-task](https://gitee.com/aiv367/aiv367-task) #### 示例 [http://aiv367.gitee.io/aiv367-task/demo](http://aiv367.gitee.io/aiv367-task/demo) #### 安装 ``` npm i aiv367-task --save ``` #### 使用 ```js import task from 'aiv367-task'; // 向默认组添加一个任务, 返回 Promise task.add((resolve, reject) => { // 模拟异步 setTimeout(() => { // 执行代码 // 任务结束后,调用 resolve() 或者 reject() resolve('ok'); }, 1000); }).then((res) => { //... }); ``` ```js // 注: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'); ``` ```js // 事件 // 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); // 移除指定 ``` ```js // 通过设置下列参数,可以在任务执行后,保留任务内容,默认是自动移除 task.config.autoRemovefinished = false; ```