UNPKG

flo-utils

Version:
67 lines (61 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * @name debounce, 防抖函数,(高频操作,性能优化) * @param {*} fn * @param {number} [step=100] * @returns * @example * const debounceAjax = debounce((newParams)=>{ return new Promise((resolve, reject) => { xhr({ url: '/api', type: 'POST', data: newParams, success: res => { const {data} = res; const arr = isArray(data) ? data : []; resolve(arr); }, error: err => { reject(err); } }); }); }, 300); export function apiExample (params) { const newParams = filterParams(params); return new Promise((resolve) => { const keys = Object.keys(newParams); if (!keys.length) { resolve([]); } else { debounceAjax(newParams).then(res => { resolve(res); }); } }); } */ function debounce(fn) { var _this = this; var step = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100; var timeout = null; return function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } clearTimeout(timeout); return new Promise(function (resolve) { timeout = setTimeout(function () { resolve(fn.apply(_this, args)); }, step); }); }; } var _default = debounce; exports.default = _default;