Skip to content

An async generator that takes an array of promise executor functions and creates promises in chunks with fault-tolerance

Notifications You must be signed in to change notification settings

arafathusayn/promise-chunk-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

promise-chunk-generator

An async generator that takes an array of promise executor functions and creates promises in chunks with fault-tolerance

Installation

npm install promise-chunk-generator

Basic Example:

const promiseChunkGenerator = require("promise-chunk-generator");

const concurrency = 5; // how many promises you want to run concurrenty, default: 1

let promiseExecutors = []; // array of executor functions, each to pass in new Promise(executor)

for (let i = 0; i < 3; i++) {
  const promiseExecutor = resolve => {
    console.log(`${i} Promise running`);
    const timeout = Math.round(Math.random() * 4 + 1);
    const timeoutId = setTimeout(() => {
      clearTimeout(timeoutId);
      resolve(timeout);
    }, timeout * 1000);
  };

  promiseExecutors.push(promiseExecutor);
}

const options = {
  promiseExecutors,
  concurrency,
};

// Inside an async function...
const generator = await promiseChunkGenerator(options);

while (true) {
  const object = await generator.next();

  if (object.done) {
    break;
  }

  console.log(object);
}

All Options:

const promiseChunkGenerator = require("promise-chunk-generator");

const options = {
  promiseExecutors, // array of functions to pass in new Promise(executor)
  concurrency, // how many promises you want to run concurrenty, default: 1
  perChunkTimeoutDuration, // default: 5 * 60 * 1000 ms
  perPromiseTimeoutDuration, // default: 2 * 60 * 1000 ms
  promiseTimeoutFunction, // pass if you want to customize it, see: src/promise-timeout.js
  promiseCatchFunction, // pass if you want to customize it, see: src/promise-catch-function.js
  promiseChunkCatchFunction, // pass if you want to customize it, see: src/promise-chunk-catch-function.js
  returnRejectedPromiseExecutor, // default: true
};

// Inside an async function...
const generator = await promiseChunkGenerator(options);




License: MIT
Author: Arafat Husayn

About

An async generator that takes an array of promise executor functions and creates promises in chunks with fault-tolerance

Topics

Resources

Stars

Watchers

Forks