INNER CODE UNIT · TypeScript
useLockFn
libnyanpasu/clash-nyanpasu · frontend/hooks/src/index.ts:153
export function useLockFn<P extends unknown[] = unknown[], T = unknown>(
fn: LockFn<P, T>,
): LockFn<P, T> {
const lockRef = useRef(false)
const fnRef = useRef(fn)
fnRef.current = fn
return useCallback(async (...args: P): Promise<T> => {
if (lockRef.current) {
console.warn(`Function is locked: ${fnRef.current.name}`)
return undefined as T
}
lockRef.current = true
try {
return await fnRef.current(...args)
} finally {