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