zoukankan      html  css  js  c++  java
  • 配置节流函数

     debounce 函数 

      function debonce (method) {

     clearTimeout(method.timer)

     method.timer = setTimeout( function () {

      method ()

     }, 50)

    }

    debonce 函数保证函数执行频率最多 50ms执行一次 当时间间隔小于 50ms时 清除这个定时器 函数定时器重新计时 

    throttle 函数保证当函数执行频率超过50ms一次时 只要之后的一次调用throttle函数 当函数调用时间间隙大于50ms 调用method函数

    var oldTime = new Date().getTime()

    function throttle (method) {

      var newTime = new Date().getTime() 

      if (newTime - oldTime >= 50 ) {

        newTime = new Date().getTime()

        method()

     }

    }

    /**
    *配置节流函数
    *@param {[function]} fn [要执行的函数]
    *@param {[Number]} delay [延迟执行的毫秒数]
    *@param {[Number]} mustRun [至少多久执行一次]
    *@return {[function]} [节流函数]
    */
    exports.throttle = (fn, wait, mustRun) => {
    let timeout
    let startTime = new Date()
    return function () {
      let context = this
      let args = arguments
      let curTime = new Date()

      clearTimeout(timeout)

      if (curTime - startTime >= mustRun) {
      // 如果到达触发时间 触发handler
      fn.apply(context, args)
      startTime = curTime
     } else {
    // 如果没到达触发 时间 重新设定定时器
      timeout = setTimeout(fn, wait)
      }
    }
    }

    以上函数的作用是 最多delay(ms)内执行一次   mustRun(ms) 时间间隔内最少执行一次

  • 相关阅读:
    ElementUI 组件不支持@keyup 的解决办法
    ElementUI 实现头部组件和左侧组件效果
    ElementUI 整体页面布局
    vue路由登录拦截
    vue中使用localStorage存储信息
    ElementUI Checkbox 多选框
    vue拦截器qs
    (未完)经典Web漏洞实战演练靶场笔记
    文件包含漏洞实战靶场笔记
    文件解析漏洞总结
  • 原文地址:https://www.cnblogs.com/love-yangerlei/p/7853660.html
Copyright © 2011-2022 走看看