flo-utils
Version:
67 lines (61 loc) • 1.51 kB
JavaScript
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;
;