1.3.3 • Published 7 years ago

asap-es v1.3.3

Weekly downloads
19
License
MIT
Repository
github
Last release
7 years ago

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.

libasyncsyncconcurrencyprioritysizelicense
asap-es✔️✔️✔️✔️sizelicense
asap✖️✔️✖️✖️sizelicense
aurelia-task-queue✔️✔️✖️✖️sizelicense
d3-queue✔️✔️✔️✖️sizelicense
kueue✔️✔️✖️✖️sizelicense
queue✔️✔️✔️✔️sizelicense
run-queue✔️✔️✔️✔️sizelicense

api

namedescription
new <ctor>(c)create new asap-es instance, optinal concurrency can be passed as argument
<ctor>(c)same as above
<instance>.cthe 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
tasktask 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
})))
1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.0.1

7 years ago