對於我正在寫的一些代碼,我可以在Java中使用一個很好的通用實現debounce
。在Java中實現去抖動
public interface Callback {
public void call(Object arg);
}
class Debouncer implements Callback {
public Debouncer(Callback c, int interval) { ... }
public void call(Object arg) {
// should forward calls with the same arguments to the callback c
// but batch multiple calls inside `interval` to a single one
}
}
當call()
被多次調用在interval
毫秒具有相同參數的回調函數應調用一次。
的可視化:
Debouncer#call xxx x xxxxxxx xxxxxxxxxxxxxxx
Callback#call x x x (interval is 2)
- 不(像)這個已經存在的一些Java標準庫?
- 你將如何實現?
看起來像[java.util.concurrency](http://download.oracle.com/javase/1.5 .0/docs/api/java/util/concurrent/package-summary.html)提供了積木 – levinalex 2011-01-20 00:38:35
我知道這是一個老問題,但幾個月前我在這裏發佈了一個類似的問題:http:// stackoverflow。 COM /問題/ 18723112 /取消法通話-WH en-the-same-method-is-called-multiple-time/18758408#18758408並在GitHub上提供了一個可能有興趣的可重用實現 – ARRG 2014-01-07 07:41:08