/**
* JS函数防抖:
* 一些dom操作例如mousemove、scroll等会频繁发生,绑定在这些事件的函数会不断被触发,
* 会频繁操作dom,开销很大
*
* 节流方法:最后一次操作才执行,即后面没有再操作了
*
* 第一次触发,新建一个计时器
* 每次触发函数都清除掉上一个计时器,新建一个计时器
* 剩最后一个计时器,如果倒计300ms还没有触发则执行最后创建的这个延时函数
*/
var timer = null;
window.onresize = function () {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
resizehandler();
}, 300);
}
/**
* 函数节流
* 相当于按照一个频率执行,例如每500ms一次
*
* 第一次触发函数的时候记下时间
* 之后每次触发都检查一下离初始时间多久,到了delay时间就执行函数,让后吧pre时间改成
* 当前触发时间
*
* 另一种方法和防抖一样
*/
var throttle = function (func, delay) {
var prev = Date.now();
return function () {
var context = this;
var args = arguments;
var now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);
prev = Date.now();
}
}
}
function handle() {
console.log("函数节流");
}
//addEventListenenr后面是传入一个函数
window.addEventListener('mousemove', throttle(handle, 1000));