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.
Возвращает 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 | Необязательно. По умолчанию |
Возвращает
OperatorFunction<T, Observable<T>>
windowTime(windowTimeSpan: number, windowCreationInterval: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>
Параметры
windowTimeSpan | number | |
windowCreationInterval | number | |
scheduler | SchedulerLike | Необязательно. По умолчанию |
Возвращает
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 | Необязательно. По умолчанию |
Возвращает
OperatorFunction<T, Observable<T>>
См. также
© 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