
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
event-loop-yielder
Advanced tools
A collection of strategies for yielding to the event loop, to avoid blocking for too long.
A collection of strategies for yielding to the event loop, to avoid blocking for too long.
npm install --save event-loop-yielder
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 ();
}
MIT © Fabio Spampinato
FAQs
A collection of strategies for yielding to the event loop, to avoid blocking for too long.
We found that event-loop-yielder demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
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.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.