對於節流閥的理解,舉個不恰當的例子,使用節流閥就像在一個賓館睡覺,一間屋子只能睡一個人。
第一步,進入房間,默認門是開着的(flag=true),所以可以直接進來睡覺;
第二步,為了確保安全,需要將門關上(flag=false);
第三步,睡覺結束(一個事件完成),需要離開讓下一個進來睡覺,將門打開(flag=true)。
這樣如此反復,確保在睡覺這件事情上,一次只能睡一個人。
代碼如下:
1 <button>按鈕</button> 2 <script> 3 var btn = document.querySelector('button'); 4 var flag = true; 5 var timer; 6 btn.onclick = function () { 7 clearTimeout(timer)//延時器可以寫在if里面,也可以寫在外面,如果寫在外面,必須清理延時器,否則會創建多個延時器,導致flag很快為true,就一直輸出1;如果寫在里面,想要執行定時器,必須通過if語句,確保了定時器的安全 8 if (flag == true) { 9 flag = false; 10 console.log(1); 11 } 12 timer = setTimeout(function () { 13 flag = true; 14 }, 2000) 15 } 16 </script>