1.0.3 • Published 1 year ago

aiv367-task v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

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;
1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago