let timer; let
? ? flag
/**
* 節(jié)流原理:在一定時間內(nèi)仇哆,只能觸發(fā)一次
*
* @param {Function} func 要執(zhí)行的回調(diào)函數(shù)
* @param {Number} wait 延時的時間
* @param {Boolean} immediate 是否立即執(zhí)行
* @return null
*/
function throttle(func, wait = 500, immediate = true) {
? ? if (immediate) {
? ? ? ? if (!flag) {
? ? ? ? ? ? flag = true
? ? ? ? ? ? // 如果是立即執(zhí)行燥撞,則在wait毫秒內(nèi)開始時執(zhí)行
? ? ? ? ? ? typeof func === 'function' && func()
? ? ? ? ? ? timer = setTimeout(() => {
? ? ? ? ? ? ? ? flag = false
? ? ? ? ? ? }, wait)
? ? ? ? }
? ? } else if (!flag) {
? ? ? ? flag = true
? ? ? ? // 如果是非立即執(zhí)行蟀俊,則在wait毫秒內(nèi)的結(jié)束處執(zhí)行
? ? ? ? timer = setTimeout(() => {
? ? ? ? ? ? flag = false
? ? ? ? ? ? typeof func === 'function' && func()
? ? ? ? }, wait)
? ? }
}
export default throttle