1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| import { ref, unref } from 'vue';
|
| export function useLockFn<P extends any[] = any[], V extends any = any>(fn: (...args: P) => Promise<V>) {
| 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;
| }
| };
| }
|
|