import { ref, unref } from 'vue'; export function useLockFn

( fn: (...args: P) => Promise ) { const lockRef = ref(false); return async function (...args: P) { if (unref(lockRef)) return; lockRef.value = true; try { const ret = await fn(...args); lockRef.value = false; return ret; } catch (e) { lockRef.value = false; throw e; } }; }