いくつかのコードについては、Javaでdebounce
という素晴らしい一般的な実装を使用できます。Javaでデバウンスを実装する
call()
は、コールバック関数は1回だけ呼び出されるべき同じ引数で
interval
ミリ秒単位で複数回呼び出され
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
}
}
。
可視化:
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
これは古い質問ですが、私は数ヶ月前にここで同様の質問を投稿しました:http:// stackoverflow。 co.jp/questions/18723112/canceling-method-calls-wh同じメソッドを複数の時刻/ 18758408#18758408と呼び、興味のあるGitHubで再利用可能な実装を提供しました – ARRG