由此我们尝试下面的程序:
function throttle(func, t) {
let timer = null;
return function () {
if (!timer) {
timer = setTimeout(() => {
timer = null;
}, t);
func();
}
};
}
我们写个例子来测试它的效果:
let count = 1;
const container = document.getElementById('container');
function getUserAction() {
container.innerHTML = count++;
};
container.onmousemove = throttle(getUserAction, 1000);

有了防抖函数的经验,我们很容易依葫芦画瓢写出节流的立即执行:
function throttle(func, t) {
let timer = null;
return function () {
if (!timer) {
+ func();
timer = setTimeout(() => {
timer = null;
}, t);
- func();
}
};
}
简单通过移动func执行的位置即可。
其实立即执行应该更合理,我们可以默认开启立即执行,