asap-es
TypeScript icon, indicating that this package has built-in type declarations

1.3.3 • Public • Published

asap-es

build coverage dependencies dev-dependencies optional-dependencies peer-dependencies version downloads license maintainability

a queue runner with priorities, concurrency and promises

installation

npm install asap-es

why

The main goal is to provide lightweight and modern library for queuing tasks. The name was inspired by the asap library. There is already a few libraries with similar functionality, yet this is another one.

lib async sync concurrency priority size license
asap-es ✔️ ✔️ ✔️ ✔️ size license
asap ✖️ ✔️ ✖️ ✖️ size license
aurelia-task-queue ✔️ ✔️ ✖️ ✖️ size license
d3-queue ✔️ ✔️ ✔️ ✖️ size license
kueue ✔️ ✔️ ✖️ ✖️ size license
queue ✔️ ✔️ ✔️ ✔️ size license
run-queue ✔️ ✔️ ✔️ ✔️ size license

api

name description
new <ctor>(c) create new asap-es instance, optinal concurrency can be passed as argument
<ctor>(c) same as above
<instance>.c the number of tasks to run simultaneously (1 by default), set to < 1 to pause the queue
<instance>.q(task, priority) enqueue a new task, returns a promise which resolves or rejects when execution of the task is finished, optionally pass priority
task task is a function which may return a value or a promise (task awaits for promise completion)

usage example

import asap from "asap-es";
import delay from "asap-es/delay";
import timeout from "asap-es/timeout";
 
// you can have many independent queues
const queue = new asap();
 
// paused queue will not run tasks
const queuePaused = new asap(false);
 
// resume the queue by increasing concurrency
queuePaused.c++;
 
// promises
queue.q(() => Promise.resolve(2)).then(console.log);
// console >> 2
 
// pause the queue
queue.c = 0;
 
// async functions
queue.q(async () => {
    // do some async things
});
 
// task with higher priority
queue.q(() => void 0, -1);
 
// set concurrency and resume the queue
queue.c = 2;
 
// delay execution of a task by 20 ms
queue.q(delay(20, () => void 0));
 
// handle errors
queue.q(() => {
    throw new Error();
}).catch(console.error);
// console >> error
 
// timeout a task after given time
queue.q(timeout(200, () => {
    // a long task
}));
 
// combine delay and timeout
queue.q(delay(10, timeout(5, () => {
    // this task waits 10 ms for execution, then timeouts in 5 ms
})))

Package Sidebar

Install

npm i asap-es

Weekly Downloads

28

Version

1.3.3

License

MIT

Unpacked Size

13.3 kB

Total Files

9

Last publish

Collaborators

  • tlaziuk