🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

@vlsergey/batcher

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vlsergey/batcher

Small JavaScript module to batch async requests with queue

1.0.0
latest
Source
npm
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

@vlsergey/batcher

Small JavaScript module to batch async requests with queue.

NPM version Downloads

Installation

npm i --save @vlsergey/batcher

or

npm i --save-dev @vlsergey/batcher

Usage


/* Define function that will do actual work. Not for single,
but for collection of keys. */
const batchFunction = async ( allArgs ) => {
  // allArgs is array of arrays (unless flattenArguments specified )
  const response = fetch( /*...*/ );
  if ( !response.ok ) {
    console.error( response );
    throw new Error( "Unable to fetch API result: " + response.statusText );
  }
  // return the array of result
  // length of result array MUST be the same as length of allArgs
  // order IS important
  return await response.json();
}
const batcher = new Batcher( batchFunction );
/* ... */

// Queue single call
const aPromise = batcher.queue( 'Test value' ); // is't a Promise
aPromise.then( someResultA => { /*...*/ } );

// Still single call with multiple arguments
const bPromise = batcher.queue( 'arg0', 'arg1' ); // is't a Promise
bPromise.then( someResultB => { /*...*/ } );

// Queue 2 calls with different number of arguments
const allPromises = batcher.queueAll( [ 'arg3' ], [ 'arg3', 'arg4' ] ); // Also a Promise, but obtained from Promise.all( ... ) call
allPromises.then( ( values ) => /* ... */ );

// Technically will wait, but looks nice in code in async functions
const gimmeResultNow = await batcher.queue( someRequest );

API

Constructor

const batcher = new Batcher( batchFunction );
const batcher = new Batcher( batchFunction, options );

Options

OptionDefault ValueDescription
delay0Delay between batch function calls. Ignored if item added to queue.
flattenArgumentsfalseIf true before call all queued arguments will be flatten to single array (using args.flatMap( a => a ) call). It is useful if Batcher is used for single-key calls. Otherwise it will create problems with multi-argument calls
maxBatchSize50max size of batch for single batchFunction call
maxQueueSizeNumber.MAX_SAFE_INTEGERMax items in queue. Error will be thrown on queue attempt if exceed.

Methods

queue( arg0, arg1, ... ) -- adds single element to queue. Immediately calls batchFunction if not in progress.

queueAll( [arg00, arg00], [arg10, arg11], ... ) -- adds multiple elements to queue. Immediately calls batchFunction if not in progress.

Keywords

async

FAQs

Package last updated on 13 Mar 2022

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