Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

event-loop-yielder

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

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.

  • 3.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
22
increased by83.33%
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 04 Apr 2024

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc