Oracle中的ROWID實現(r10筆記第95天)
阿新 • • 發佈:2022-05-05
函式防抖:短時間多次觸發同一事件,只執行 最開始 或 最後 一次操作。
function debounce(func, ms = 1000) { let timer; return function(...args) { console.log(args); if (timer) { clearTimeout(timer); } timer = setTimeout(() => { func.apply(this, args); }, ms); }; } const task = () => {console.log('run task')}; const debounceTask= debounce(task, 1000); window.addEventListener('click', debounceTask); // click 可以換成 scroll
對 debounce 函式返回的匿名函式中 args 引數(這裡可忽略)的存在作出說明:
const debounceTask = debounce(task, 1000) 其實返回的是匿名函式。
點選頁面觸發 window.addEventListener('click', debounceTask) 事件,debounceTask 會執行。
這裡 debounceTask 沒有傳遞引數,列印 args 會看到有個事件物件,這裡的原因是因為:
在瀏覽器中,如果函式執行沒有傳遞引數,會預設有個瀏覽器事件物件作為引數,如監聽的是點選 click 事件的話 args 就是 [PointerEvent]
將 click 換成 scroll,如果在函式不防抖,要執行很多次了~