useAsyncLock

一个 React 钩子(Hook),用于创建一个函数,以确保每次只有一个在运行,并且提供了一个额外的无效操作回调函数。

演示

快速并重复点击按钮以检查。

源码
Fetched data:
undefined
Locked status:
false
Invalid fetch times:
0

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const lockedFn = useAsyncLock(asyncFn, onMeetLock)

异步函数 AsyncFn

一个返回 promise 的函数。

遇到锁的回调 OnMeetLock

当函数被锁定并再次被调用时将调用的函数。

返回值

一个可以用来确保每次只有一个在运行,返回一个 promise,该 promise 解析异步函数的返回值或无效操作回调函数的返回值。

export type UseAsyncLockReturns<T extends AnyFunc, R extends AnyFunc> = ( ...args: Parameters<T> ) => R extends undefined ? Promise<Awaited<ReturnType<T>> | undefined> : Promise<Awaited<ReturnType<T>> | Awaited<ReturnType<R>>>Promise<ReturnType<T>>