首页 > 代码库 > 防抖动

防抖动

 1假如有一个 doThings() 的方法来响应 window.onresize 事件,但这个方法执行一次需要消耗一定资源,因此不希望它频繁的执行,于是我们不直接将 doThings() 绑定到 window.onresize ,而是再定义一个 handleResize() 的方法专门处理 window.onresize,在这个方法里至少过 50ms 才调用一次 doTings(),并且每隔 200ms 必执行一次 doTings(),请实现 handleResize() 方法。 2  3 参考答案: 4 function doThings() { 5     // a lot of things 6 } 7 function handleResize() { 8     var timer = null, 9         delay = 50,10         must_do = 200,11         last_time;12     return function() {13         clearTimeout(timer);14         var now_time = +new Date;15         if (!last_time) {16             last_time = now_time;17         } else if (now_time - last_time > must_do) {18             doThings();19             last_time = now_time;20         } else {21             timer = setTimeout(function() {22                 doThings();23                 last_time = +new Date;24             }, delay);25         }26     };27 }28 window.onresize = handleResize();

 

防抖动