flexlock
flexlock
is a small, memory-concious, flexible, Promise-based locking library without dependencies.
npm i flexlock --save
It is similar to other in-memory locking library like mutexify
, mutex-js
, await-lock
, and many more, but with more flexibility in how
to use it. This makes it sturdier and more practical in many cases.
simple API when that suffices
const createLock = // require('flexlock').createLock works too const lock =
Timeouts in case anther lock never returns
// This never releases the lock
Propagation of errors and results
{ try const important = await // You can use the important data here. catch err // Woops, something happened! }
Dedicated locks for more readable async code
{ const unlock = await // do your thing }
release handlers both once and globally
const lock = lock await lock // Promise API available as well
Namespace support for multiple lockers
const createLocker = // require('flexlock').createLocker works too const lock = { await }
Implementation note: The locker will use createLock
per id. It will keep the created lock until all locks
for that id are released. Then it will pass the lock to the garbage collector.
License
MIT