xc-app/utils/jsUtils.js

62 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* js 相关的工具函数 */
/**
* @description [throttle 节流函数]
* @author shanshuizinong
* @param {Function} fn 延时调用函数
* @param {Number} delay 延迟多长时间
* @param {Number} atleast 至少多长时间触发一次
* @return {Function} 延迟执行的方法
*/
export function throttle(fn, delay = 1000, atleast = 1000) {
let timer = null
let previous = null
return function() {
let now = +(new Date())
const args = arguments
const ctx = this
if (!previous) previous = now
if (atleast && now - previous > atleast) {
fn && fn.apply(ctx, args)
previous = now
clearTimeout(timer)
} else {
clearTimeout(timer)
timer = setTimeout(function() {
fn && fn.apply(ctx, args)
previous = null
}, delay)
}
}
}
//防抖
function debounce(fun, delay) {
return function(args) {
//获取函数的作用域和变量
let that = this
let _args = args
//每次事件被触发都会清除当前的timeer然后重写设置超时调用
clearTimeout(fun.id)
fun.id = setTimeout(function() {
fun.call(that, _args)
}, delay)
}
}
export function uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}