【问题标题】:watchr: Is it possible to do something when a file stopped changing?watchr:当文件停止更改时,是否可以做一些事情?
【发布时间】:2012-06-01 02:56:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby watchr


    【解决方案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()}
    

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      相关资源
      最近更新 更多