kasbah / await-lock

Mutex locks for async functions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AwaitLock tests codecov

Mutex locks for async functions

API

API documentation

Usage

import AwaitLock from 'await-lock';

let lock = new AwaitLock();

async function runSerialTaskAsync() {
  await lock.acquireAsync();
  try {
    // IMPORTANT: Do not return a promise from here because the finally clause
    // may run before the promise settles, and the catch clause will not run if
    // the promise is rejected
  } finally {
    lock.release();
  }
}

You can also use AwaitLock with co and generator functions.

import AwaitLock from 'await-lock';

let runSerialTaskAsync = co.wrap(function*() {
  yield lock.acquireAsync();
  try {
    // Run async code in the critical section
  } finally {
    lock.release();
  }
});

About

Mutex locks for async functions

License:MIT License


Languages

Language:TypeScript 96.1%Language:JavaScript 3.9%