Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
auto-reset-event
Advanced tools
This package mimic the behavior of AutoResetEvent
of C#, an acquire-release one semantic.
Although JavaScript is single-threaded, one might want to limit number of concurrent asynchronous operations. For example, a task that requires multiple asynchronous steps to complete can use this package to limit its concurrency.
Run npm install auto-reset-event
.
import createAutoResetEvent from 'auto-reset-event';
// Create an acquire-release queue
const acquire = createAutoResetEvent();
// Acquire a single lock, this function will not be resolved until the lock is acquired
const release = await acquire();
// Do the non-parallelized asynchronous work
// Release the lock
release();
import createAutoResetEvent from 'auto-reset-event';
import delay from 'delay';
async function main() {
const acquire = createAutoResetEvent();
await Promise.all([
(async () => {
const release = await acquire();
console.log('You will see this first.');
await delay(1000);
release();
})(),
(async () => {
const release = await acquire();
console.log('You will see this after a second.');
await delay(1000);
release();
})(),
]);
console.log('You will see this last, after two seconds.');
}
main().catch(err => console.error(err));
auto-reset-event
can be used to limit concurrency for asynchronous operations.
We can use auto-reset-event
to easily slow down concurrent requests by limiting its concurrency and serving rate. In this sample, we slowed down serving static content by serving one request every second.
import { createServer } from 'restify';
import createAutoResetEvent from 'auto-reset-event';
import delay from 'delay';
import serveHandler from 'serve-handler';
const server = createServer();
const acquireSlowLock = createAutoResetEvent();
server.get('/public/*', async (req, res) => {
// If ?slow is added to the URL, we will slow it down by serving one request every second
if ('slow' in req.query) {
// Make sure it is not cached, so we can replay the slow behavior easily
res.noCache();
const release = await acquireSlowLock();
await delay(1000);
release();
}
await serveHandler(req, res, { path: join(__dirname, './public') });
});
server.listen(process.env.PORT || 80);
Like us? Star us.
Want to make it better? File us an issue.
Don't like something you see? Submit a pull request.
[1.0.0] - 2018-10-03
FAQs
An acquire-release one semantic implemented in Promise.
The npm package auto-reset-event receives a total of 6 weekly downloads. As such, auto-reset-event popularity was classified as not popular.
We found that auto-reset-event demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.