# @fengdi-spore/async-queue

> ```javascript

Latest version **1.0.3** (published 2022-08-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install @fengdi-spore/async-queue
pnpm add @fengdi-spore/async-queue
yarn add @fengdi-spore/async-queue
bun add @fengdi-spore/async-queue
```

## Health

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

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2022-08-09 |
| First published | 2022-08-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 7.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | tangoboy |

## Links

- npm: https://www.npmjs.com/package/@fengdi-spore/async-queue
- npm.io page: https://npm.io/package/@fengdi-spore/async-queue

## Dependencies (1)

- [eventemitter3](https://npm.io/package/eventemitter3.md) ^4.0.7

## Recent versions

- 1.0.3 (latest) — 2022-08-09
- 1.0.2 — 2022-08-08
- 1.0.1 — 2022-08-02
- 1.0.0 — 2022-08-02

## README

# AsyncQueue 异步队列

```javascript

//队列有任务就开始按顺序执行，所有任务完成就结束触发end事件，再次加入任务时再次自动开始

let aq = new AsyncQueue({
    autoRunWithPush: true
});

aq.push(async ()=>{
    //做第1件事
}).push(async ()=>{
    //做第2件事
});

aq.push(async ()=>{
    //做第3件事
});

```



```javascript


let wait = function(time, res){
    return new Promise(resolve=>{
        setTimeout(function(){
            resolve(res)
        }, time)
    })
};

let createTask = function(time, id){
    return function(){
        console.log(`正在执行任务:${id}，耗时${time}`);
        return wait(time, id)
    }
}


// 实例化异步队列
let aq = new AsyncQueue({
    autoRunWithPush: true
});
// 每一个任务完成触发
aq.on('step', function(res){
    console.log('完成任务', res);
});
// 当队列空触发
aq.on('end', function(res){
    console.log('队列任务结束，结果为', res);
});


aq.push( createTask(1000, 1) );
await wait(1000);
aq.push( createTask(2000, 2) );
aq.clear();
aq.push( createTask(1000, 3) )
.push( createTask(1200, 4) )
.push( createTask(1000, 5) );
// await wait(2400);
// aq.clear();
// await wait(1000);
aq.push( createTask(1000, 6) );

```

---
_Source: https://npm.io/package/@fengdi-spore/async-queue · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
