import com.github.nylle.javafixture.Fixture;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
public class DebounceExample {
private static final Fixture fixture = new Fixture();
public static void main(String[] args) {
Supplier<String> searchSupplier = () -> {
String keyword = fixture.text().characters(10).build();
};
Supplier<String> debouncedSearchSupplier = Debounce.debounce(searchSupplier, 500, TimeUnit.MILLISECONDS);
simulateUserInput(debouncedSearchSupplier);
}
private static void simulateUserInput(Supplier<String> debouncedSearchSupplier) {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(fixture.random().nextInt(300));
} catch (InterruptedException e) {
e.printStackTrace();
}
String keyword = fixture.text().characters(1).build();
String searchResult = debouncedSearchSupplier.get();
System.out.println(searchResult);
}
}
}
<dependency>
<groupId>com.github.nylle</groupId>
<artifactId>debounce</artifactId>
<version>1.0</version>
</dependency>
gradle
dependencies {
implementation 'com.github.nylle:debounce:1.0'
}