kliping.pro
  • Docs
  • Explore
  • Builder
  • Directory
  • Colors
  • Typeset
Saved
Hooks
  • Getting Started2
  • State7
  • Advanced6
  • useCreation
  • useCustomCompareEffect
  • useLatest
  • useLockFn
  • useMemoizedFn
  • usePrevious
  • Lifecycle16
  • Browser21
  • Development1
  • Third-Party4
  • Libraries4
  1. Hooks
  2. Advanced
  3. useLockFn

useLockFn

PreviousNext

Membungkus fungsi async supaya tidak bisa jalan dua kali bersamaan.

Gunanya satu dan konkret: tombol kirim yang ditekan dua kali tidak mengirim dua kali. Panggilan yang datang saat panggilan sebelumnya belum selesai diabaikan — bukan diantrikan, bukan ditunda.

Kuncinya dilepas di finally, jadi ikut terlepas juga saat fungsinya melempar. Tanpa itu satu kegagalan mengunci tombolnya selamanya, dan itu jenis cacat yang cuma muncul di hari yang buruk.

Installation ​

pnpm dlx kliping@latest add use-lock-fn

Tanpa dependensi — tidak ada berkas lain yang ikut terpasang.

Salin kode berikut ke project Anda.

ts
export function useLockFn<P extends any[] = any[], V = any>(fn: (...args: P) => Promise<V>) {
  let locked = false

  return async (...args: P): Promise<V | undefined> => {
    if (locked) return undefined

    locked = true
    try {
      return await fn(...args)
    } finally {
      locked = false
    }
  }
}

Requirements ​

RequirementValue
ProjectVue 3.5+, alias @ — disiapkan kliping init
Filescomposables/use-lock-fn.ts

API Reference ​

ts
export function useLockFn<P extends any[] = any[], V = any>(
  fn: (...args: P) => Promise<V>,
)

Parameters ​

ParameterTypeDefaultDescription
fn(...args: P) => Promise<V>—Async function to guard.

Returns ​

(...args: P) => Promise<V \| undefined> — Wrapped function; calls made while a previous call is pending are ignored and resolve to undefined.

Credits ​

Berasal dari shadcn-hooks (MIT, Copyright (c) 2025 Brendan Dash). Rantai lengkapnya di Credits.

PrevioususeLatestNext useMemoizedFn

On This Page

InstallationRequirementsAPI ReferenceParametersReturnsCredits

© 2026 Kliping. Free components are open source under the MIT License.

LicenseCreditsRoadmap