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 {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…