throttle<Event> function

EventTransformer<Event> throttle<Event>(
  1. Duration duration, {
  2. EventTransformer<Event>? andThen,
})

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);
  };
}