debounce<T> function
Worker
debounce<T>(
- RxInterface<
T> listener, - WorkerCallback<
T> callback, { - Duration? time,
- Function? onError,
- void onDone()?,
- bool? cancelOnError,
debounce is similar to interval, but sends the last value.
Useful for Anti DDos, every time the user stops typing for 1 second,
for instance.
When listener
emits the last "value", when time
hits,
it calls callback
with the last "value" emitted.
Sample:
worker = debounce(
count,
(value) {
print(value);
if( value > 20 ) worker.dispose();
},
time: 1.seconds,
);
}
Implementation
Worker debounce<T>(
RxInterface<T> listener,
WorkerCallback<T> callback, {
Duration? time,
Function? onError,
void Function()? onDone,
bool? cancelOnError,
}) {
final debouncerCallback =
Debouncer(delay: time ?? const Duration(milliseconds: 800));
StreamSubscription sub = listener.listen(
(event) {
debouncerCallback(() {
callback(event);
});
},
onError: onError,
onDone: onDone,
cancelOnError: cancelOnError,
);
return Worker(sub.cancel, '[debounce]');
}