Documentation
    Preparing search index...

    Class IMQLock

    Class IMQLock. Implements promise-based locks.

    ~~~typescript
    import { IMQLock, AcquiredLock } from '.';

    async function doSomething(): Promise<number | AcquiredLock<number>> {
    const lock: AcquiredLock<number> = await IMQLock.acquire<number>('doSomething');

    if (IMQLock.locked('doSomething')) {
    // avoiding err handling in this way can cause ded-locks
    // so it is good always try catch locked calls!
    // BTW, IMQLock uses timeouts to avoid dead-locks
    try {
    // this code will be called only once per multiple async calls
    // so all promises will be resolved with the same value
    const res = Math.random();
    IMQLock.release('doSomething', res);
    return res;
    }

    catch (err) {
    // release acquired locks with error
    IMQLock.release('doSomething', null, err);
    throw err;
    }
    }

    return lock;
    }

    (async () => {
    for (let i = 0; i < 10; ++i) {
    // run doSomething() asynchronously 10 times
    doSomething().then((res) => console.log(res));
    }
    })();
    ~~~
    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    deadlockTimeout: number = 10000

    Deadlock timeout in milliseconds

    logger: ILogger = console

    Logger used to log errors which appears during locked calls

    Methods

    • Returns true if given key is locked, false otherwise

      Parameters

      • key: string

      Returns boolean

    • Releases previously acquired lock for a given key

      Type Parameters

      • T
      • E

      Parameters

      • key: string
      • Optionalvalue: T
      • Optionalerr: E

      Returns void