Socket
Socket
Sign inDemoInstall

event-loop-yielder

Package Overview
Dependencies
1
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    event-loop-yielder

A collection of strategies for yielding to the event loop, to avoid blocking for too long.


Version published
Weekly downloads
63
decreased by-31.52%
Maintainers
1
Install size
15.2 kB
Created
Weekly downloads
 

Readme

Source

Event Loop Yielder

A collection of strategies for yielding to the event loop, to avoid blocking for too long.

Install

npm install --save event-loop-yielder

Usage

The following functions will each make a different kind of yielder, you just call it and await its result, the yielder will decide on its own whether to actually yield to the event loop or not.

makeImmediateYielder

An immediate yielder will yield to the main thread using a polyfilled setImmediate, which waits for microtasks, but not timeouts.

import {makeImmediateYielder} from 'event-loop-yielder';

const yielder = makeImmediateYielder ();

for ( let i = 0; i < 1000000; i++ ) {

  if ( i % 100 ) { // // Yielding every 100th iteration

    await yielder ();

  }

  runSomeComputation ();

}

makeIntervalYielder

An interval yielder will yield to the event loop after at least interval number of milliseconds have elapsed since it last yielded.

It supports yielding via different strategies, by default it will use setTimeout.

import {makeIntervalYielder} from 'event-loop-yielder';

const yielder = makeIntervalYielder ( 16 ); // Yield after 16ms have elapsed since the last yield

for ( let i = 0; i < 1000000; i++ ) {

  await yielder (); // The yielder may or may not actually yield when you call it

  runSomeComputation ();

}

makeTimeoutYielder

A timeout yielder will yield to the main thread using setTimeout, which usually gives a lot of time for the engine/browser to do its things.

import {makeTimeoutYielder} from 'event-loop-yielder';

const yielder = makeTimeoutYielder ();

for ( let i = 0; i < 1000000; i++ ) {

  if ( i % 100 ) { // // Yielding every 100th iteration

    await yielder ();

  }

  runSomeComputation ();

}

License

MIT © Fabio Spampinato

Keywords

FAQs

Last updated on 04 Apr 2024

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