节流(throttle)
第一步
- 实现一个函数,返回一个函数func
- 参数,第一个参数是一个函数,第二个参数是一个数字time
- 当频繁调用返回的函数func时,有规律地time时间执行一次
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次调用都指定timeout后再执行
timer = setTimeout(() => {
timer = null;
func();
}, timeout);
};
}
第二步
- 函数可以传参数
- 在func调用时要使用function ()的上下文this
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次调用都指定timeout后再执行
timer = setTimeout(() => {
timer = null;
func.apply(this, Array.from(arguments));
}, timeout);
};
}