@node-libraries/semaphore
Implement virtual semaphore for asynchronous processing
Example
import { semaphore } from "@node-libraries/semaphore";
const f = (value: string) =>
new Promise<void>((resolve) => {
console.timeLog("debug", value);
setTimeout(resolve, 1000);
});
const main = async () => {
console.time("debug");
const s = semaphore();
["A", "B", "C", "D", "E"].forEach(async (v) => {
await s.acquire();
await f(v);
s.release();
});
await s.all();
console.timeLog("debug", "end");
};
main();
import { semaphore } from "@node-libraries/semaphore";
const f = (value: string) =>
new Promise<void>((resolve) => {
console.timeLog("debug", value);
setTimeout(resolve, 1000);
});
const main = async () => {
console.time("debug");
const s = semaphore(2);
["A", "B", "C", "D", "E"].forEach(async (v) => {
await s.acquire();
await f(v);
s.release();
});
await s.all();
console.timeLog("debug", "end");
};
main();