throttleTime
function
stable
Emits a value from the source Observable, then ignores subsequent source values for duration
milliseconds, then repeats this process.
throttleTime<T>(duration: number, scheduler: SchedulerLike = asyncScheduler, config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction<T>
Parameters
duration | Time to wait before emitting another value after emitting the last value, measured in milliseconds or the time unit determined internally by the optional |
scheduler | Optional. Default is The |
config | Optional. Default is a configuration object to define |
Returns
MonoTypeOperatorFunction<T>
: A function that returns an Observable that performs the throttle operation to limit the rate of emissions from the source.
Description
Lets a value pass, then ignores source values for the next duration
milliseconds.
throttleTime
emits the source Observable values on the output Observable when its internal timer is disabled, and ignores source values when the timer is enabled. Initially, the timer is disabled. As soon as the first source value arrives, it is forwarded to the output Observable, and then the timer is enabled. After duration
milliseconds (or the time unit determined internally by the optional scheduler
) has passed, the timer is disabled, and this process repeats for the next source value. Optionally takes a SchedulerLike
for managing timers.
Examples
Limit click rate
Emit clicks at a rate of at most one click per second
import { fromEvent } from 'rxjs'; import { throttleTime } from 'rxjs/operators'; const clicks = fromEvent(document, 'click'); const result = clicks.pipe(throttleTime(1000)); result.subscribe(x => console.log(x));
Double Click
The following example only emits clicks which happen within a subsequent delay of 400ms of the previous click. This for example can emulate a double click. It makes use of the trailing
parameter of the throttle configuration.
import { fromEvent, asyncScheduler } from 'rxjs'; import { throttleTime, withLatestFrom } from 'rxjs/operators'; // defaultThottleConfig = { leading: true, trailing: false } const throttleConfig = { leading: false, trailing: true } const click = fromEvent(document, 'click'); const doubleClick = click.pipe( throttleTime(400, asyncScheduler, throttleConfig) ); doubleClick.subscribe((throttleValue: Event) => { console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`); });
If you enable the leading
parameter in this example, the output would be the primary click and the double click, but restricts additional clicks within 400ms.
See Also
© 2015–2021 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors.
Code licensed under an Apache-2.0 License. Documentation licensed under CC BY 4.0.
https://rxjs.dev/api/operators/throttleTime