Nutritious Pumpkin Mash

    async-await-mutex-lock
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.10 • Public • Published

    Async Await Mutex Lock

    Tests

    Mutex locks for async functions with functionality to use keys for separate locks

    NPM

    Usage Instructions

    Without Key

    import { Lock } from "async-await-mutex-lock";
    
    let lock = new Lock();
    
    async function serialTask() {
      await lock.acquire();
    
      try {
        // Don't return a promise here as Promise may resolve after finally
        // has executed
      } finally {
        lock.release();
      }
    }

    With Key

    All the keys will have their own separate locks and separate waiting lists. A key can have any type (eg. string, number, etc. or a custom type allowed by typescript as a Map key)

    import { Lock } from "async-await-mutex-lock";
    
    let lock = new Lock<string>();
    
    async function serialTask() {
      await lock.acquire("myKey");
    
      try {
        // Don't return a promise here as Promise may resolve after finally
        // has executed
      }
      finally {
        lock.release("myKey");
      }
    }
    
    async function serialTaskTwo() {
      await lock.acquire("myKeyTwo");
    
      try {
        // Don't return a promise here as Promise may resolve after finally
        // has executed
      }
      finally {
        lock.release("myKeyTwo");
      }
    }

    Checking if a lock is acquired or not

    import { Lock } from "async-await-mutex-lock";
    
    let lock = new Lock();
    
    async function serialTask() {
      await lock.acquire();
    
      console.log(lock.isAcquired()); // prints true
    }

    isAcquired() with key checks for the given key separately.

    import { Lock } from "async-await-mutex-lock";
    
    let lock = new Lock<string>();
    
    async function serialTask() {
      await lock.acquire("myKey");
    
      console.log(lock.isAcquired("myKey")) // prints true
    }

    Issues or Bugs

    In case of any issues or bugs, please open a pull request here

    Install

    npm i async-await-mutex-lock

    DownloadsWeekly Downloads

    1,100

    Version

    1.0.10

    License

    MIT

    Unpacked Size

    16.7 kB

    Total Files

    16

    Last publish

    Collaborators

    • _sidharth_m_