Socket
Socket
Sign inDemoInstall

asynchronousforeach

Package Overview
Dependencies
0
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    asynchronousforeach

async parallel/serial foreach


Version published
Maintainers
1
Install size
7.61 kB
Created

Readme

Source

Asynchronous forEach

A Symbol based Array.prototype extension that enables asynchronous declarative iteration on arrays and array-like objects. The following two extensions mostly adhere to the Array.prototype.forEach syntax.

$ npm i --save asynchronousforeach

Asynchronous Serial forEach

Array.prototype['asynchronousforeach'](callback: (value, key, array), thisArg) : Promise

This function invokes the callback passed to it on each array's value, but one by one, waiting the completion of all the async operations contanined into the callback before passing to the next value. When the callback returns on the last call, the promise returned by the async forEach will complete with the undefined value.

const {
    asyncSerialForEach,
} = require('asynchronousforeach');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

const array = [1, 2, 3, 4, 5];

(async() => {
    await array[asyncSerialForEach](async v => (await delay(1000), console.log(v)));
    console.log('done');
})();

In the previous example we can see that each value contained into the array will be printed with a time span of one second from each other. Then we will see done printed on the console.

Asynchronous Parallel forEach

Array.prototype['asynchronousforeach'](callback: (value, key, array), concurrentOps = array.length, thisArg) : Promise

This function invokes the callback passed to it on each array's value, in parallel (from an async perspective). The async operations contained into the callback won't be waited before passing to the next value. When each promise returned by each call will fulfill, the promise returned by the async forEach will complete with the undefined value. You can set the number of concurrent operations thanks to the concurrentCbs parameter; by default the whole array will be concurrently processed.

const {
    asyncParallelForEach,
} = require('asynchronousforeach');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

const array = [1, 2, 3, 4, 5];

(async() => {
    await array[asyncParallelForEach](async v => (await delay(1000), console.log(v)));
    console.log('done');
})();

In the previous example we can see that all the values will be printed, in order, after 1 second. Then we will see done printed on the console.

const {
    asyncParallelForEach,
} = require('asynchronousforeach');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

const array = [1, 2, 3, 4, 5];

(async() => {
    await array[asyncParallelForEach](async v => (await delay(1000), console.log(v)), 2);
    console.log('done');
})();

In the previous example we set the maximum number of concurrent operations to 2. Because there are 5 elements in the array and each operations lasts 1 second, we well see done printed after 3 seconds.

Keywords

FAQs

Last updated on 04 Jun 2019

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc