ts-mutex
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i ts-mutex

Weekly Downloads

378

Version

1.0.0

License

MIT

Unpacked Size

2.36 kB

Total Files

4

Last publish

Collaborators

  • linusu