0

下面是debounceUnderscore.js 中函数的描述:

创建并返回传递函数的新去抖动版本,该版本将推迟其执行,直到自上次调用以来等待毫秒过去后。对于实现仅在输入停止到达后才应发生的行为很有用。例如:渲染 Markdown 注释的预览,在窗口停止调整大小后重新计算布局等等。

有没有一种简单的方法可以使用 watchr 来实现这种行为?我正在编辑数据库文件,所以我无法控制它何时保存。当我完成编辑时,我想用 ruby​​ 做一些事情。

4

1 回答 1

1

不是那么简单的解决方案 - 使用Thread

class Debouncer                                         
  def initialize(seconds, &block)                       
    @seconds = seconds                                  
    @block = block                                      
  end                                                   

  def register_event                                    
    Thread.kill(@thread) unless @thread.nil?            
    @thread = Thread.new do                             
      sleep @seconds                         
      @block.call                                       
    end                                                 
  end                                                   

end                                                     

debouncer = Debouncer.new(30) { do_thing } 
watch( 'venus/database/(.*)' )   {|md| debouncer.register_event()}
于 2012-06-01T03:22:36.887 回答