Spec-Zone.ru › RxJS

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 openings, и возвращает Subscribable или Promise, которые, при выдачи, сигнализируют о необходимости выдачи и очистки связанного буфера.

Возвращает

OperatorFunction<T, T[]>: Функция, которая возвращает Observable массивов буферизованных значений.

Описание

Собирает значения из прошлого в виде массива. Начало сбора происходит только при выдачи opening, и вызов функции closingSelector для получения Observable, указывающего, когда закрыть буфер.

bufferToggle marble diagram

Буферизует значения из источника, открывая буфер посредством сигналов от 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));

См. также

  • buffer
  • bufferCount
  • bufferTime
  • bufferWhen
  • windowToggle

© 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

Spec-Zone.ru

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