https://github.com/savokiss/queue
Just a simple async queue
https://github.com/savokiss/queue
async-queue js
Last synced: 4 months ago
JSON representation
Just a simple async queue
- Host: GitHub
- URL: https://github.com/savokiss/queue
- Owner: savokiss
- License: mit
- Created: 2018-12-29T06:26:32.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T22:42:14.000Z (about 3 years ago)
- Last Synced: 2025-08-10T01:39:36.624Z (6 months ago)
- Topics: async-queue, js
- Language: JavaScript
- Homepage:
- Size: 475 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# queue
Just a simple async queue
# Installation
```console
yarn add @savo/queue
```
# Usage
## Basic
```js
const q = new Queue(1)
const task1 = done => setTimeout(_ => {console.log('1'); done()}, 1000)
const task2 = done => setTimeout(_ => {console.log('2'); done()}, 1000)
const task3 = done => setTimeout(_ => {console.log('3'); done()}, 1000)
q.push(task1)
q.push(task2)
q.push(task3)
// console
// 1 - after 1000ms
// 2 - after 2000ms
// 3 - after 3000ms
```
## Concurrency=2
```js
const q = new Queue(2)
const task1 = done => setTimeout(_ => {console.log('1'); done()}, 1000)
const task2 = done => setTimeout(_ => {console.log('2'); done()}, 1000)
const task3 = done => setTimeout(_ => {console.log('3'); done()}, 1000)
// console
// 1 - after 1000ms
// 2 - after 1000ms
// 3 - after 2000ms
```
## AutoStart=false
```js
const q = new Queue(1, false)
const task1 = done => setTimeout(_ => {console.log('1'); done()}, 1000)
const task2 = done => setTimeout(_ => {console.log('2'); done()}, 1000)
const task3 = done => setTimeout(_ => {console.log('3'); done()}, 1000)
// queue wont start until you call q.start()
q.start()
// console
// 1 - after 1000ms
// 2 - after 2000ms
// 3 - after 3000ms
```
## Stop
```js
const q = new Queue(1)
const task1 = done => setTimeout(_ => {console.log('1'); done()}, 1000)
const task2 = done => setTimeout(_ => {console.log('2'); done()}, 1000)
const task3 = done => setTimeout(_ => {console.log('3'); done()}, 1000)
// When you call stop after 1500 ms
q.stop()
// console
// 1 - after 1000ms
// 2 - after 2000ms
```
# API
```ts
interface Task {
(done: Function): void;
}
declare class Queue {
constructor(concurrency:number, autoStart = true);
push(task: Task): void;
start(): void;
stop(): void;
}
export default Queue
```
# License
MIT