Spec-Zone.ru › RxJS

throttle

function stable operator

Выпускает значение из источника Observable, затем игнорирует последующие значения источника в течение периода времени, определяемого другим Observable, затем повторяет этот процесс.

throttle<T>(durationSelector: (value: T) => ObservableInput<any>, config?: ThrottleConfig): MonoTypeOperatorFunction<T>

Параметры

durationSelector (value: T) => ObservableInput<any>

Функция, которая получает значение из источника Observable для вычисления периода заглушки для каждого значения источника, возвращаемого как ObservableInput.

config ThrottleConfig

Необязательно. По умолчанию undefined.

Объект конфигурации для определения поведения leading и trailing. По умолчанию { leading: true, trailing: false }.

Возвращает

MonoTypeOperatorFunction<T>: функция, которая возвращает Observable, выполняющий операцию throttle для ограничения скорости выдачи из источника.

Описание

Это как throttleTime, но период заглушки определяется вторым Observable.

throttle marble diagram

throttle выпускает значения источника Observable в выходном Observable, когда его внутренний таймер отключён, и игнорирует значения источника, когда таймер включён. Изначально таймер отключён. Как только придёт первое значение источника, оно передаётся в выходное Observable, а затем таймер включается путём вызова функции durationSelector со значением источника, которая возвращает Observable "duration". Когда Observable duration выпускает значение, таймер отключается, и этот процесс повторяется для следующего значения источника.

Пример

Выпуск кликов со скоростью не более одного клика в секунду

import { fromEvent, throttle, interval } from 'rxjs';

const clicks = fromEvent(document, 'click');
const result = clicks.pipe(throttle(() => interval(1000)));

result.subscribe(x => console.log(x));

См. также

  • audit
  • debounce
  • delayWhen
  • sample
  • throttleTime

© 2015–2022 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/throttle

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API