UNPKG

@tanshenghu/web-utils

Version:

web公共方法

88 lines (75 loc) 2.46 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Orderly; var _common = require('../common'); var _common2 = _interopRequireDefault(_common); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Orderly(func) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var selfThis = this; var touchLoading = false; var tid = null; var exeid = null; // 防抖 if (options.type === 'debounce') { return function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var result = void 0; if (tid) clearTimeout(tid); tid = setTimeout(function () { result = func.apply(selfThis, args); }, options.sleep); return result; }; } else if (options.type === 'throttle') { // 节流 return function () { var result = void 0; var eNow = Date.now(); if (!exeid || eNow - exeid > options.sleep) { exeid = eNow; for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } result = func.apply(selfThis, args); } return result; }; } return function () { var args = Array.from(arguments); args.push(function () { touchLoading = false; }); if (!touchLoading) { touchLoading = true; var ret = func.apply(selfThis, args); _common2.default.seek().equal(ret && typeof ret.then === 'function', function () { return ret.then(function () { touchLoading = false; }); }).equal(ret && typeof ret.finally === 'function', function () { return ret.finally(function () { touchLoading = false; }); }).equal(ret && typeof ret.catch === 'function', function () { return ret.catch(function () { touchLoading = false; }); }).else(function () { return options.sleep === null ? null : setTimeout(function () { touchLoading = false; }, options.sleep || 1200); }).get()(); } }; } /** * @Author: 谭生虎 TanShenghu tanshenghu@163.com * @Update: 2020-03-20 * @Description: 防止“疯狂”操作 涉及到 防抖、节流等操作 */ module.exports = exports['default'];