Spec-Zone.ru › RxJS

windowTime

function stable operator

Периодически группирует значения источника Observable в вложенные Observable.

windowTime<T>(windowTimeSpan: number, ...otherArgs: any[]): OperatorFunction<T, Observable<T>>

Параметры

windowTimeSpan number

Время в миллисекундах для заполнения каждого окна.

otherArgs any[]

Возвращает

OperatorFunction<T, Observable<T>>: Функция, возвращающая Observable окон, которые, в свою очередь, являются Observable.

Описание

Подобно bufferTime, но вместо массива, испускает вложенное Observable.

windowTime marble diagram

Возвращает Observable, которое испускает окна элементов, собранных из исходного Observable. Выходное Observable начинает новое окно периодически, как определено параметром windowCreationInterval. Оно испускает каждое окно после заданного интервала времени, указанного параметром windowTimeSpan. Когда исходное Observable завершается или встречает ошибку, выходное Observable испускает текущее окно и распространяет уведомление от исходного Observable. Если windowCreationInterval не указан, выходное Observable начинает новое окно, когда предыдущее окно длительностью windowTimeSpan завершается. Если maxWindowCount указан, каждое окно будет испускать не более фиксированного числа значений. Окно завершится сразу после испускания последнего значения, а следующее всё ещё откроется, как указано параметрами windowTimeSpan и windowCreationInterval.

Примеры

В каждом окне длительностью 1 секунда испускать не более 2 событий кликов.

import { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';

const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000),
  map(win => win.pipe(take(2))), // take at most 2 emissions from each window
  mergeAll()                     // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

Каждые 5 секунд начинать окно длительностью 1 секунда и испускать не более 2 событий кликов в каждом окне.

import { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';

const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000, 5000),
  map(win => win.pipe(take(2))), // take at most 2 emissions from each window
  mergeAll()                     // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

То же, что и в примере выше, но с maxWindowCount вместо take

import { fromEvent, windowTime, mergeAll } from 'rxjs';

const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000, 5000, 2), // take at most 2 emissions from each window
  mergeAll()                 // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

Перегрузки

windowTime(windowTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>

Параметры

windowTimeSpan number
scheduler SchedulerLike

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

Возвращает

OperatorFunction<T, Observable<T>>

windowTime(windowTimeSpan: number, windowCreationInterval: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>

Параметры

windowTimeSpan number
windowCreationInterval number
scheduler SchedulerLike

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

Возвращает

OperatorFunction<T, Observable<T>>

windowTime(windowTimeSpan: number, windowCreationInterval: number | void, maxWindowSize: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>

Параметры

windowTimeSpan number
windowCreationInterval number | void
maxWindowSize number
scheduler SchedulerLike

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

Возвращает

OperatorFunction<T, Observable<T>>

См. также

  • window
  • windowCount
  • windowToggle
  • windowWhen
  • bufferTime

© 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/windowTime

Spec-Zone.ru

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