debounce<T> static method
LxWorker<T>
debounce<T>(
- LxReactive<
T> source, - Duration duration,
- void callback(
- T value
- dynamic onProcessingError(
- Object error,
- StackTrace stackTrace
Triggers callback after duration has passed without new source updates.
Implementation
static LxWorker<T> debounce<T>(
LxReactive<T> source,
Duration duration,
void Function(T value) callback, {
Function(Object error, StackTrace stackTrace)? onProcessingError,
}) {
Timer? timer;
return _LxManagedWorker<T>(
source,
(value) {
timer?.cancel();
timer = Timer(duration, () {
try {
callback(value);
} catch (e, st) {
if (onProcessingError != null) {
onProcessingError(e, st);
} else {
Zone.current.handleUncaughtError(e, st);
}
}
});
},
onProcessingError: onProcessingError,
onClose: () {
timer?.cancel();
timer = null;
},
);
}