Debounce Definition: For events that are triggered continuously in a short period of time, such as scrolling events, anti-shake means that the event processing function is executed only once within a certain time limit. Regarding anti-shake, take the example of pressing a spring with your finger. Press the spring with your finger and keep pressing. The spring will not bounce until you release your finger. Example resize: function debounce(fn, wait){ var timer = null; return ()=>{ if(timer !== null){ clearTimeout(timer); } timer = setTimeout(fn, wait); } } function handle(){ console.log(Math.random()); } window.addEventListener("resize",debounce(handle, 1000)); The above is the non-immediate execution version Immediate execution version function debounce(fn, wait){ let timeid, flag = true; return () => { clearTimeout(timeid); if(flag){ fn(); flag = false; }else{ timeid = setTimeout(()=>{ flag = true; }, wait); } } } Dragging the browser window triggers resize, but the handle function is not triggered at this time. The timer starts counting. If the resize is triggered again within the timing time, the timer will start again. The advantage of this is that dragging the browser window to trigger resize does not execute the handle function frequently, but only allows it to run when it is needed, effectively eliminating redundancy. Common writing methods: const debounce = (func, delay = 200) => { let timeout = null return function () { clearTimeout(timeout) timeout = setTimeout(() => { func.apply(this, arguments) }, delay) } } Throttle Definition : Let the event execute only once within a certain period of time. The original intention is to be like the dripping of water from a faucet, executing only once within a specified time, reducing frequent and repeated execution. Such as search box input event. Calculate by timestamp: function throttle(fn,wait){ let startTime = 0; return function(){ let endTime = Date.now(); if(endTime-startTime>wait){ fn(); startTime = endTime; } } } By timer: function throttle(fn,wait){ let timeid = null; return function(){ if(!timeid){ timeid = setTimeout(function(){ fn(); timeid = null; },wait) } } } SummarizeThis article ends here. I hope it can be helpful to you. I also hope that you can pay more attention to more content on 123WORDPRESS.COM! You may also be interested in:
|
<<: Docker time zone issue and data migration issue
>>: XHTML Tutorial: XHTML Basics for Beginners
Preface Application scenario: probably the intern...
1. Install tomcat8 with docker 1. Find the tomcat...
Preface I have been busy developing a cold chain ...
This article describes MySQL index coverage with ...
Preface Bootstrap, the most popular front-end dev...
Table of contents Written in front Two-way encryp...
Table of contents 1. What is an event? 2. How to ...
1. Grammar location [=|~|~*|^~|@] /uri/ { ... } 2...
As we all know, SSH is currently the most reliabl...
Table of contents What is Proxy Mode? Introducing...
Platform deployment 1. Install JDK step1. Downloa...
Today I would like to share with you the CSS3 tra...
my.cnf is the configuration file loaded when MySQ...
I've been learning Docker recently, and I oft...
My recommendation Solution for coexistence of mul...