UNPKG

ahooks

Version:
52 lines (51 loc) 1.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _tslib = require("tslib"); var _react = require("react"); function useLockFn(fn) { var _this = this; var lockRef = (0, _react.useRef)(false); return (0, _react.useCallback)(function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return (0, _tslib.__awaiter)(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() { var ret, _t; return _regenerator["default"].wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!lockRef.current) { _context.next = 1; break; } return _context.abrupt("return"); case 1: lockRef.current = true; _context.prev = 2; _context.next = 3; return fn.apply(void 0, args); case 3: ret = _context.sent; return _context.abrupt("return", ret); case 4: _context.prev = 4; _t = _context["catch"](2); throw _t; case 5: _context.prev = 5; lockRef.current = false; return _context.finish(5); case 6: case "end": return _context.stop(); } }, _callee, null, [[2, 4, 5, 6]]); })); }, [fn]); } var _default = exports["default"] = useLockFn;