throttle<Event> function
Throttle: processes the first event immediately, then ignores every
subsequent event for duration (leading-edge throttle).
Optionally compose with another transformer via andThen:
throttle(500.ms, andThen: droppable()) // throttle → droppable
throttle(500.ms) // standalone (sequential map)
Implementation
EventTransformer<Event> throttle<Event>(
Duration duration, {
EventTransformer<Event>? andThen,
}) {
return (events, mapper) {
final throttled = events.transform(_ThrottleStreamTransformer(duration));
return andThen != null ? andThen(throttled, mapper) : throttled.asyncExpand(mapper);
};
}