New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

esm-async-queue

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

esm-async-queue

Immediately starting queue of asynchronous or synchronous tasks, processing n function(s) concurrently. Dependency free.

latest
Source
npmnpm
Version
0.2.2
Version published
Maintainers
1
Created
Source

Publish on NPM NPM Version

esm-async-queue

A single class Queue to create an immediately starting queue of asynchronous or synchronous functions, processing n tasks concurrently. Dependency free. Exported as an esm module. Typescript definitions included.

Install

npm install esm-async-queue

Basic usage:

Example of

import { Queue } from './index.js';

const delayedResolution = (ms: any) =>
  new Promise((resolve) => setTimeout(resolve, ms));

const queue = new Queue({ concurrency: 2 });

const startTime = (new Date()).valueOf();
const getElapsedTime = (since) => `${((new Date()).valueOf() - since)}ms`;

queue.push(() => delayedResolution(200).then(() => console.log('a', getElapsedTime(startTime))));
queue.push(() => delayedResolution(400).then(() => console.log('b', getElapsedTime(startTime))));
queue.push(() => delayedResolution(200).then(() => console.log('c', getElapsedTime(startTime))));
queue.push(() => delayedResolution(400).then(() => console.log('d', getElapsedTime(startTime))));

queue.subscribe('idle', () => console.log('idle', getElapsedTime(startTime)));

// output:
// a 205ms
// b 406ms
// c 407ms
// d 811ms
// queueIdle 811ms

Methods

constructor(opts)

Creates a new queue instance.

opts.concurrency: integer, default: 1 The limit of tasks to be processed in parallel.

push(function returning PromiseLike, async function, function)

Add a task to the queue. Processes immediately if the total length of existing tasks is less than the concurrency value.

Properties

length: integer count ALL tasks in the queue, including pending tasks.

tasksPending: integer count tasks that are in the queue, awaiting processing.

tasksProcessing:: integer count tasks that are currently processing.

concurrency: integer show count of maximum concurrent tasks.

Events

// Example: This script will print true when all items have been processed (after 200ms). Finally, unsubscribe.
const queue = new Queue({ concurrency: 2 });
const unsubscribe = queue.on('idle', () => console.log(queue.length === 0)); // the returning function allows you to remove a subscription
queue.push(() => delayedResolution(200));

idle: Fired when the total queue length, including tasks processing drops to 0.

taskProcessing: Fired when a task begins processing.

taskProcessed: Fired when a task completes.

taskPushed: Fired when a task is pushed to the queue.

Development notes

See development.md

Keywords

promise

FAQs

Package last updated on 11 Jan 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts