阿西河

所有教程

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

我的收藏

    最近访问  (文章)

    教程列表

    数据库
    抓包专区
    测试专区

    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的教程都有!

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

    目录
    目录