UNPKG

ahooks

Version:
37 lines 1.12 kB
import { __awaiter, __generator, __read, __spreadArray } from "tslib"; import { useRef, useCallback } from 'react'; function useLockFn(fn) { var _this = this; var lockRef = useRef(false); return useCallback(function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return __awaiter(_this, void 0, void 0, function () { var ret, e_1; return __generator(this, function (_a) { switch (_a.label) { case 0: if (lockRef.current) return [2 /*return*/]; lockRef.current = true; _a.label = 1; case 1: _a.trys.push([1, 3,, 4]); return [4 /*yield*/, fn.apply(void 0, __spreadArray([], __read(args), false))]; case 2: ret = _a.sent(); lockRef.current = false; return [2 /*return*/, ret]; case 3: e_1 = _a.sent(); lockRef.current = false; throw e_1; case 4: return [2 /*return*/]; } }); }); }, [fn]); } export default useLockFn;