Function lockPromiseFn

  • Lock an async function to only be called once at a time

    Returns

    locked function

      it('should lockPromiseFn works', async() => {
    const fn = vi.fn((num: number) => Promise.resolve(num))
    const lockFn = lockPromiseFn(fn)
    const ret = lockFn(1)
    const ret1 = lockFn(2)
    lockFn(3)
    expect(fn).toHaveBeenCalledTimes(1)
    expect(await ret).toEqual(1)
    expect(await ret1).toBeUndefined()
    })

    Type Parameters

    • T extends any[] = []

    • V = any

    Parameters

    • fn: ((...args: T) => Promise<V>)

      async function to be locked

        • (...args: T): Promise<V>
        • Parameters

          • Rest ...args: T

          Returns Promise<V>

    Returns ((...args: T) => Promise<undefined | V>)

      • (...args: T): Promise<undefined | V>
      • Parameters

        • Rest ...args: T

        Returns Promise<undefined | V>

Generated using TypeDoc