防抖动
1假如有一個 doThings() 的方法來響應(yīng) window.onresize 事件,但這個方法執(zhí)行一次需要消耗一定資源,因此不希望它頻繁的執(zhí)行,于是我們不直接將 doThings() 綁定到 window.onresize ,而是再定義一個 handleResize() 的方法專門處理 window.onresize,在這個方法里至少過 50ms 才調(diào)用一次 doTings(),并且每隔 200ms 必執(zhí)行一次 doTings(),請實現(xiàn) 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();
堅持下去就能成功
總結(jié)
- 上一篇: VRchat模型之unity
- 下一篇: ubuntu查看软连接的实际指向位置