函數防抖:連續觸發的事件,只會觸發最後一次。每次觸發的時候都會清除上一次待觸發的。函數
const debounce = (func, wait) => { let timer; return (params) => { clearTimeout(timer); timer = setTimeout(() => {
func(params);
}, wait); }; };
函數節流:連續觸發的事件,會按照必定的頻率觸發N次。每間隔必定的時間,必然會觸發一次。spa
const throttle = (func, wait) => { let timer; return (params) => { if (timer) { // timer 存在則不會加入待執行中 return; } timer = setTimeout(() => { func(params); timer = null; // 間隔必定時間後執行一次,執行完後清空 timer 可再次執行 }, wait); }; };