Skip to content

Repository files navigation

Powered by TanuelDocumentationnpmnpm

@tanuel/async-queue

A zero dependency Promise based job queue with limited concurrency, written in TypeScript.

Installing

yarn add @tanuel/async-queue
# or
npm install @tanuel/async-queue --save

Usage

import{AsyncQueue}from"@tanuel/async-queue";(async()=>{constqueue=newAsyncQueue();queue.on("done",()=>{console.log("Queue is finished");});constfn=()=>{newPromise((resolve)=>setTimeout(resolve.bind(null,"resolved"),100));};constresult=awaitqueue.push(fn);console.log("Job has been resolved with result",result);})();

This could be used to limit concurrency of network requests, e.g. if you want to load a lot of api requests

import{AsyncQueue}from"@tanuel/async-queue";consturls=[// an array of a lot of urls];(async()=>{constqueue=newAsyncQueue({limit: 50});for(constuofurls){// queue in all the urlsqueue.push(()=>jobWithNetworkIO(u)).then((result)=>{// add even more jobs to the queue based on previous jobs// e.g. fetch details after fetching a specific listfor(constitemofresult){queue.push(()=>fetchDetails(item.url));}});}letresolved=0;letrejected=0;queue.on("next",(c,l)=>{console.log("next call triggered");}).on("reject",(e)=>{console.error("A job has been rejected:",e);rejected++;}).on("resolve",(result)=>{console.log("A job has been resolved",result);resolved++;}).on("pending",(p)=>{// There are no more remaining jobs in the queue, but not all jobs have been finishedconsole.log("Waiting for "+p+" pending Jobs to finish");}).on("done",()=>{console.log("All jobs are done");console.log(resolved,"Jobs resolved");console.log(rejected,"Jobs rejected");});})();

TypeScript

This project was written entirely in TypeScript, so you can make use of the provided type definitions!

Contributing

Feel free to open issues or pull requests on GitHub. Do not add unnecessary production dependencies, as we want to keep the dependency tree as small as possible

After cloing the project, simply run yarn install, then yarn build to compile or yarn test to run tests

About

Promise based asynchronous job queue for TypeScript

Resources

Stars

16 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages