https://github.com/phil-r/q
Simple queue task runner written in typescript
https://github.com/phil-r/q
deno queue ts typescript
Last synced: 11 months ago
JSON representation
Simple queue task runner written in typescript
- Host: GitHub
- URL: https://github.com/phil-r/q
- Owner: phil-r
- License: mit
- Created: 2020-05-18T13:26:17.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-14T11:15:40.000Z (almost 6 years ago)
- Last Synced: 2024-11-20T03:19:53.791Z (over 1 year ago)
- Topics: deno, queue, ts, typescript
- Language: TypeScript
- Size: 13.7 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Q
[](https://github.com/phil-r/q/actions?query=workflow%3ACI)
> Simple queue task runner written in typescript
## Usage
```ts
import { queue } from 'https://deno.land/x/q/mod.ts';
let result = 0;
const task = (a: number) => (result += a);
const q = queue(task, 2); // 2 is concurrency
q.drain(() => {
console.log(`Result: ${result}`);
}); // will log `Result: 6`
q.push(1);
q.push([2, 3]);
```
or using async/await
```ts
import { queue } from 'https://deno.land/x/q/mod.ts';
let result = 0;
const task = (a: number) => (result += a);
const q = queue(task, 2); // 2 is concurrency
q.push(1);
q.push([2, 3]);
await q.drain();
console.log(`Result: ${result}`); // will log `Result: 6`
```
it's also possible to use `onDone` and `onError` callbacks
```ts
import { queue } from 'https://deno.land/x/q/mod.ts';
let result = 0;
const task = (a: number) => {
if (a === 4) throw Error('ow no');
return (result += a);
};
const q = queue(task, 2); // 2 is concurrency
q.push([1, 2, 3, 4]);
q.onDone((task, result) =>
console.log(`For task: ${task}, result is ${result}`)
);
/*
Will log:
For task: 1, result is 1
For task: 2, result is 3
For task: 3, result is 6
*/
q.onError((task, error) => console.error(`Task: ${task} failed with ${error}`));
// Will log: Task: 4 failed with Error: ow no
await q.drain();
console.log(`Result: ${result}`); // will log `Result: 6`
```
## Run tests
```
deno test
```