ts-mutex

A very simple Mutex, with an easy to use API and excellent TypeScript typings.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
ts-mutex
511.0.05 years ago5 years agoMinified + gzip package size for ts-mutex in KB

Readme

Mutex
A very simple Mutex, with an easy to use API and excellent TypeScript typings.

Installation

npm install --save ts-mutex

Usage

import Mutex = require('mutex')

const lock = new Mutex()

// Only one request will be sent at a time

lock.use(async () => {
  console.log((await fetch('https://google.com/')).code)
})

lock.use(async () => {
  console.log((await fetch('https://twitter.com/')).code)
})

lock.use(async () => {
  console.log((await fetch('https://facebook.com/')).code)
})

API

new Mutex()

Creates a new Mutex instance.

Mutex#locked: boolean

Whether the mutex is currently locked or not.

Mutex#use<T> (fn: () => T | PromiseLike<T>): Promise<T>

Aquire the lock, then execute (possibly async) function fn, and finally release the lock. Returns a Promise of whatever the function fn returns.
The lock will be released even if fn throws or returns a rejected Promise. In this case, the Promise returned will also be rejected with that error.