node-async-task-queue
v1.0.2
Published
Simple async tasks queue implementation for JavaScript
Downloads
5
Readme
Async Task Queue
Simple async tasks queue implementation for JavaScript
Installation
For Node.JS or bundlers
npm i node-async-task-queue --save
Package available as CommonJS and as EcmaScript module:
// Import as CommonJS Module
const { AsyncQueye } = require('node-async-task-queue');
// Import as ECMAScript Module
import { AsyncQueye } from 'node-async-task-queue';
For browser
Just include script to your HTML page:
<script src="https://unpkg.com/[email protected]/umd/async-task-queue.min.js"
Library will be available as asyncTaskQueue
global variable:
const queue = new asyncTaskQueue.AsyncQueue();
Usage
First of all, you need to create queue instance:
import { AsyncQueye } from 'node-async-task-queue';
const queue = new AsyncQueye();
Then you just need to add task functions and, optionally, arguments for them.
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
async function someAction(someParam) {
await sleep(500);
return someParam;
}
async function someOtherAction(someParam) {
await sleep(200);
return someParam;
}
queue.push(someAction, 'foo');
queue.push(someOtherAction, 'bar').then(result => {
console.log(result); // Will print object: { args: ['bar'], error: null, result: 'bar' }
})
All actions will be executed in series, next after the previous.
If a task in the queue fails the rest of the tasks will still be executed:
async function someFailedAction(someParam) {
await sleep(500);
throw new Error(someParam);
}
async function someSucceedAction(someParam) {
await sleep(300);
return someParam;
}
queue.push(someFailedAction, 'fizz');
queue.push(someSucceedAction, 'buzz').then(result => {
console.log(result); // Will print object: { args: ['bar'], error: null, result: 'buzz' }
})
Failed task returns error instead of result:
async function someAnotherFailedAction(someParam) {
await sleep(400);
throw new Error(someParam);
}
queue.push(someAnotherFailedAction, 'failed').then(result => {
console.log(result); // Will print object: { args: ['bar'], error: Error('failed'), result: null }
});