一,防抖
- 每執行一次函式,都要等待固定的時間後。。才會去執行函式。應用場景:輸入搜尋。快速點選按鈕觸發請求等。
- debouce的模擬實現;
Function.prototype.myDebounce = function(callback, wait) {
let timer = null;
return function(...rest) {
if(timer) {
clearTimeout(tiemr);
}
setTimeout(()=> {
callback.apply(this, rest);
}, wait)
}
}
複製程式碼
二,節流
- 在一段時間內。無論觸發多少次函式。都只執行一次。應用場景:滾動拉介面載入資料等。
- throttle的模擬實現
Function.prototype.myThrottle = function(cb, wait) {
let flag = false;
return function(...arg) {
if(flag) {
return;
}
flag = true;
setTimeout(() => {
cb.apply(this, arg);
flag = false;
}, wait)
}
}
複製程式碼