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 去抖动方法。


标签:CoffeeScript

相关阅读 >>

CoffeeScript 清理字符串前后的空白符

CoffeeScript 使用 jasmine 测试

CoffeeScript 更快的 fibonacci 算法

CoffeeScript 生成唯一 id

CoffeeScript 工厂方法模式

CoffeeScript 双向服务器

CoffeeScript 检测与构建丢失的函数

CoffeeScript sqlite

CoffeeScript 计算(美国和加拿大的)感恩节日期

CoffeeScript 指数对数运算

更多相关阅读请进入《CoffeeScript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...