# aiv367-task

> javascript 任务队列模块

Latest version **1.0.3** (published 2022-12-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install aiv367-task
pnpm add aiv367-task
yarn add aiv367-task
bun add aiv367-task
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2022-12-21 |
| First published | 2022-12-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 11.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | aiv367 |
| Maintainers | aiv367 |
| Keywords | task |

## Links

- npm: https://www.npmjs.com/package/aiv367-task
- npm.io page: https://npm.io/package/aiv367-task

## Recent versions

- 1.0.3 (latest) — 2022-12-21
- 1.0.2 — 2022-12-21
- 1.0.1 — 2022-12-08
- 1.0.0 — 2022-12-07

## 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;
```

---
_Source: https://npm.io/package/aiv367-task · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
