Spec-Zone.ru › RxJS

debounceTime

function stable operator

Издаёт уведомление из источника Observable только после того, как определённый интервал времени прошёл без других событий источника.

debounceTime<T>(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T>

Параметры

dueTime number

Длительность таймаута в миллисекундах (или единица измерения времени, определяемая внутри с помощью необязательного scheduler) для интервала времени, необходимого для ожидания тишины выдачи перед изданием последнего значения источника.

scheduler SchedulerLike

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

SchedulerLike для управления таймерами, обрабатывающими таймаут для каждого значения.

Возвращаемое значение

MonoTypeOperatorFunction<T>: Функция, которая возвращает Observable, откладывающую выдачи из исходного Observable на заданный dueTime, и может отбрасывать некоторые значения, если они появляются слишком часто.

Описание

Это похоже на delay, но пропускает только последнее уведомление из каждого набора выдачи.

debounceTime marble diagram

debounceTime откладывает уведомления, выдаваемые исходным Observable, но отбрасывает предыдущие ожидающие отложенные выдачи, если на исходном Observable появляется новое уведомление. Этот оператор отслеживает последнее уведомление из исходного Observable и издаёт его только тогда, когда dueTime прошло без появления других уведомлений на исходном Observable. Если новое значение появляется до того, как dueTime тишины, предыдущее уведомление будет отброшено и не будет издано, и будет запланировано новое dueTime. Если завершающее событие происходит во время dueTime, последнее кэшированное уведомление издаётся перед передачей завершающего события выходному observable. Если событие ошибки происходит во время dueTime или после него, только событие ошибки передаётся выходному observable. Кэшированное уведомление в этом случае не издаётся.

Это оператор ограничения скорости, потому что невозможно, чтобы более одного уведомления было издано в любой интервал времени длительностью dueTime, но это также оператор типа задержки, так как выдачи на выходе не происходят одновременно с теми, что были на исходном Observable. Необязательно принимает SchedulerLike для управления таймерами.

Пример

Издать последнее событие клика после серии кликов

import { fromEvent, debounceTime } from 'rxjs';

const clicks = fromEvent(document, 'click');
const result = clicks.pipe(debounceTime(1000));
result.subscribe(x => console.log(x));

См. также

  • audit
  • auditTime
  • debounce
  • sample
  • sampleTime
  • throttle
  • 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/debounceTime

Spec-Zone.ru

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