2012-06-01 40 views
0

這裏的debounce功能從Underscore.js說明:watchr:文件停止改變時可以做些什麼嗎?

創建並返回傳遞的功能,這將推遲執行,直到等待後,因爲它被調用最後一次毫秒已經過去的一個新的版本去抖。用於實現只應在輸入停止後纔會發生的行爲。例如:渲染Markdown註釋的預覽,在窗口停止調整大小後重新計算佈局等等。

有沒有一種簡單的方法來實現這種行爲使用watchr?我正在編輯數據庫文件,所以在保存時我無法控制。當我編輯完成後,我想用ruby做一些事情。

回答

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()} 
相關問題