bufferToggle
function stable operator
Буферизует значения исходного Observable, начиная с выдачи от openings и заканчивая, когда выдача closingSelector завершается.
bufferToggle<T, O>(openings: ObservableInput<O>, closingSelector: (value: O) => ObservableInput<any>): OperatorFunction<T, T[]>
Параметры
openings | ObservableInput<O> | Подписка или Promise уведомлений для начала новых буферов. |
closingSelector | (value: O) => ObservableInput<any> | Функция, которая принимает значение, выдаваемое observable |
Возвращает
OperatorFunction<T, T[]>: Функция, которая возвращает Observable массивов буферизованных значений.
Описание
Собирает значения из прошлого в виде массива. Начало сбора происходит только при выдачи opening, и вызов функции closingSelector для получения Observable, указывающего, когда закрыть буфер.
Буферизует значения из источника, открывая буфер посредством сигналов от Observable, предоставленного openings, и закрывая/отправляя буферы, когда происходит выдача Subscribable или Promise, возвращаемых функцией closingSelector.
Пример
Каждые полсекунды выдавать события кликов из следующих 500 мс
import { fromEvent, interval, bufferToggle, EMPTY } from 'rxjs';
const clicks = fromEvent(document, 'click');
const openings = interval(1000);
const buffered = clicks.pipe(bufferToggle(openings, i =>
i % 2 ? interval(500) : EMPTY
));
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/bufferToggle