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 一个随机整数函数

CoffeeScript 列表推导

CoffeeScript 归纳数组

CoffeeScript 检查变量的类型是否为数组

CoffeeScript 计算复活节的日期

CoffeeScript 计算月球的相位

CoffeeScript 克隆对象(深度复制)

CoffeeScript 备忘录模式

CoffeeScript 解释器模式

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




打赏

取消

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

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

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

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

评论

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