節(jié)流(throttle)
第一步
- 實(shí)現(xiàn)一個函數(shù)侈咕,返回一個函數(shù)func
- 參數(shù)怜俐,第一個參數(shù)是一個函數(shù)制圈,第二個參數(shù)是一個數(shù)字time
- 當(dāng)頻繁調(diào)用返回的函數(shù)func時,有規(guī)律地time時間執(zhí)行一次
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次調(diào)用都指定timeout后再執(zhí)行
timer = setTimeout(() => {
timer = null;
func();
}, timeout);
};
}
第二步
- 函數(shù)可以傳參數(shù)
- 在func調(diào)用時要使用function ()的上下文this
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次調(diào)用都指定timeout后再執(zhí)行
timer = setTimeout(() => {
timer = null;
func.apply(this, Array.from(arguments));
}, timeout);
};
}