JavaScript utility to enqueue asynchronous tasks and run them sequentially one after another. For Node.js and the browser.
$ npm install awaitqueue
- In ES6:
import {
AwaitQueue,
AwaitQueueTask,
AwaitQueueTaskDump,
AwaitQueueStoppedError,
AwaitQueueRemovedTaskError
} from 'awaitqueue';
- In CommonJS:
const {
AwaitQueue,
AwaitQueueTask,
AwaitQueueTaskDump,
AwaitQueueStoppedError,
AwaitQueueRemovedTaskError
} = require('awaitqueue');
type AwaitQueueTask<T> = () => (T | PromiseLike<T>);
TypeScript type representing a function that returns a value T
or a Promise that resolves with T
.
type AwaitQueueTaskDump =
{
idx: number;
task: AwaitQueueTask<unknown>;
name?: string;
enqueuedTime: number;
executionTime: number;
};
TypeScript type representing an item in the array returned by the awaitQueue.dump()
method.
idx
: Index of the pending task in the queue (0 means the task being processed now).task
: The function to be executed.name
: The name of the givenfunction
(if any) or thename
argument given toawaitQueue.push()
method (if any).enqueuedTime
: Time in milliseconds since the task was enqueued, this is, sinceawaitQueue.push()
was called until its execution started or until now if not yet started.executionTime
: Time in milliseconds since the task execution started (or 0 if not yet started).
Creates an AwaitQueue
instance.
Number of enqueued pending tasks.
Accepts a task as argument and enqueues it after pending tasks. Once processed, the push()
method resolves (or rejects) with the result returned by the given task.
@param task
: Asynchronous or asynchronous function.@param name
: Optional task name (useful forawaitQueue.dump()
method).
Make pending tasks reject with an instance of AwaitQueueStoppedError
. The AwaitQueue
instance is still usable for future tasks added via push()
method.
Removes the pending task with given index. The task is rejected with an instance of AwaitQueueRemovedTaskError
.
@param taskIdx
: Index of the pending task to be removed.
Returns an array with information about pending tasks in the queue. See the AwaitQueueTaskDump
type above.
See test.ts file.