windowWhen
function stable operator
Разветвляет значения источника Observable в вложенное Observable с помощью фабричной функции закрывающих Observable для определения момента начала нового окна.
windowWhen<T>(closingSelector: () => ObservableInput<any>): OperatorFunction<T, Observable<T>>
Параметры
closingSelector | () => ObservableInput<any> | Функция без аргументов, возвращающая |
Возвращает
OperatorFunction<T, Observable<T>>: Функция, возвращающая Observable окон, которые, в свою очередь, являются Observable.
Описание
Это как bufferWhen, но вместо массива испускает вложенное Observable.
Возвращает Observable, испускающее окна элементов, собранных из источника Observable. Выходное Observable испускает связанные, неперекрывающиеся окна. Оно испускает текущее окно и открывает новое, когда Observable, созданное указанной функцией closingSelector, испускает элемент. Первое окно открывается сразу при подписке на выходное Observable.
Пример
Испускает только первые два события клика в каждом окне из [1-5] случайных секунд
import { fromEvent, windowWhen, interval, map, take, mergeAll } from 'rxjs';
const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
windowWhen(() => interval(1000 + Math.random() * 4000)),
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)); См. также
© 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/windowWhen