资讯详情

js防抖与节流

所谓防抖,是指触发事件后 n 如果在秒内只执行一次函数, n 如果事件在几秒钟内再次触发,函数执行时间将被重新计算。简而言之,防抖类似于返回城市,中断必须返回。

代码实现

/**  * @desc 函数防抖  * @param fn 函数  * @param wait 毫秒延迟执行  * @param immediate true 立即执行,false 非立即执行表格  */  const debounce = function (fn, wait, immediate = false) {   let timer = null   return function () {     let context = this     let args = arguments      if (timer) {       // 触发事件后,函数只能在n秒内执行一次。如果函数在n秒内再次触发,函数执行事件将被重新计算       clearTimeout(timer)    }     if (immediate) {       // 立即执行版本       let callNow = !timer       if (callNow) {         fn.apply(context, args)      }       timer = setTimeout(() => {         timer = null      }, wait)    } else {       timer = setTimeout(() => {         fn.apply(context, args)      }, wait)    }  } }

所谓节流,是指连续触发事件但在 n 秒中只执行一次函数。节流会稀释函数的执行频率。简而言之,节流就类似技能需要冷却时间到了才能用。

代码实现

/**  * @desc 函数节流  * @param fn 函数  * @param wait 毫秒延迟执行  * @param type 1 表时间戳版,2 表定时器版  */  const throttle = function (fn, wait, type) {   if (type === 1) {     let preTime = 0     return function () {       let context = this       let args = arguments       let nowTime = new Date()       if (nowTime - preTime > wait) {         preTime = nowTime         fn.apply(context, args)      }    }  } else {     let timer = null     return function () {       let context = this       let args = arguments       if (!timer) {         // 延迟时间结束后,执行函数         timer = setTimeout(() => {           timer = null           fn.apply(context, args)        }, wait)      }    }  } }

标签: jhs200t电阻器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台