以下是Underscore.js中debounce
函数的说明:
创建并返回传递函数的新debounced版本,该函数将推迟执行,直到自上次调用之后经过等待毫秒。用于实现仅在输入停止到达后才会发生的行为。例如:呈现Markdown注释的预览,在窗口停止调整大小后重新计算布局,等等。
使用watchr有一种简单的方法来实现这种行为吗?我正在编辑数据库文件,因此我无法控制它何时保存。当我完成编辑时,我想用ruby做点什么。
答案 0 :(得分: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()}