Open lixiaojuan12 opened 4 years ago
函数的防抖debounce:不是某个事件触发就去执行函数,而是在指定的时间间隔内,执行一次,减少函数执行的次数。(在一定时间只能只能执行一次)
/* * @Parma * func要执行的函数 * wait间隔等待的时间 * immediate在开始边界还是结束边界触发执行(true在开始边界) * @return * 可被调用的函数 * by 不要情绪 on 2020/05/24 */ function debounce(func, wait, immediate) { let result = null, timeout = null; return function (...args) { let context = this, now = immediate && !timeout; clearTimeout(timeout); //重点:在设置新的定时器之前,要把之前设置的定时器都清除,因为防抖的目的是等待时间内,只执行一次 timeout = setTimeout(() => { if (!immediate) result = func.call(context, ...args); clearTimeout(timeout); timeout = null; }, wait); if (now) result = func.call(context, ...args); } }
函数的防抖debounce:不是某个事件触发就去执行函数,而是在指定的时间间隔内,执行一次,减少函数执行的次数。(在一定时间只能只能执行一次)