阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      CoffeeScript 去抖动函数

      去抖动函数

      问题

      你想只执行某个函数一次,在开始或结束时把多个连续的调用合并成一个简单的操作。

      解决方案

      使用一个命名函数:

      debounce: (func, threshold, execAsap) ->
        timeout = null
        (args...) ->
          obj = this
          delayed = ->
            func.apply(obj, args) unless execAsap
            timeout = null
          if timeout
            clearTimeout(timeout)
          else if (execAsap)
            func.apply(obj, args)
          timeout = setTimeout delayed, threshold || 100
      mouseMoveHandler: (e) ->
        @debounce((e) ->
          # 只能在鼠标光标停止 300 毫秒后操作一次。
        300)
      
      someOtherHandler: (e) ->
        @debounce((e) ->
          # 只能在初次执行 250 毫秒后操作一次。
        250, true)
      

      讨论

      可参阅John Hann的博客文章,了解JavaScript 去抖动方法

      卖前端学习教程

      只需几十元,就能买到培训班的内部教程!开启高薪之路!

      零基础小白阿里P7的教程都有!

      同时长期收购所有培训班的前端教程

      目录
      目录