22 lines
486 B
TypeScript
22 lines
486 B
TypeScript
import { ref } from 'vue'
|
|
|
|
export function useLockFn(fn: (...args: any[]) => Promise<any>) {
|
|
const isLock = ref(false)
|
|
const lockFn = async (...args: any[]) => {
|
|
if (isLock.value) return
|
|
isLock.value = true
|
|
try {
|
|
const res = await fn(...args)
|
|
isLock.value = false
|
|
return res
|
|
} catch (e) {
|
|
isLock.value = false
|
|
throw e
|
|
}
|
|
}
|
|
return {
|
|
isLock,
|
|
lockFn
|
|
}
|
|
}
|