0.1.1 • Published 2 years ago

semaphore-ng v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

SemaphoreNG

Super simple semaphore implementation written in TypeScript. The concept is similar to semaphore.js.

Installation

$ npm install semaphore-ng
# or
$ yarn add semaphore-ng

Example

// ESM
import { Semaphore } from "semaphore-ng";

// CommonJS
const { Semaphore } = require("semaphore-ng");

const semaphore = new Semaphore(1);

app.get("/", (req, res) => {
    // acquire
    semaphore.acquire(async (release) => {
        const data = await someExpensiveTask();

        // release once done
        release();

        res.send(data);
    });
});

API

C new Semaphore(maxCapacity: number);

Creates a semaphore instance.

M Semaphore.acquire(cb: (release: ReleaseFunction) => unknown, n?: number);

Acquire and release when the task is done.

M Semaphore.call(cb: () => unknown, n?: number);

Same as acquire but release is automatically handled.

M Semaphore.release(n?: number);

The release method.

M Semaphore.clear();

Clears the queue.

P Semaphore.isAvailable(n?: number);

Check for availability.

P Semaphore.size;

The queue size.