Буферизирует исходные наблюдаемые значения до тех пор, пока закрытиеNotifier не выдаст.

Проще говоря, мы можем сказать, что оператор буфера ждет, пока другой предоставленный наблюдаемый объект испускает, и как только внутренний наблюдаемый объект испускает, он собирает ранее испущенные значения из источника, объединяет их в массив и испускает.

Подпись

buffer(closingNotifier: Observable<any>): OperatorFunction

closeNotifier: наблюдаемое, которое излучает, чтобы уведомить

OperatorFunction: функция, которая выдает результат в виде наблюдаемого

Пример фрагмента кода для оператора буфера приведен ниже.

const intervalObs = interval( 1000 ).pipe(take( 10 )); // (1)
const timeInterval = interval( 4000 ); // (2)
const ob$ = intervalObs.pipe(buffer(timeInterval)); // (3)
ob$.subscribe(val => console.log(val)); // (4)

На шаге 1 мы создаем наблюдаемую с именем intervalObs с помощью оператора interval и берем только первые 10 выбросов. На втором шаге мы снова создаем другой наблюдаемый через интервальный оператор, но он выдает значения через каждые 4000 мс. Затем на следующем шаге мы передаем intervalObs через оператор буфера с наблюдаемым timeInterval в качестве параметра и присваиваем его постоянному значению, называемому ob$. Как и в случае с другими наблюдаемыми, мы подписываемся на него и выводим значение на консоль.

Результат приведенного выше фрагмента кода выглядит следующим образом.

// [0, 1, 2]
// [3, 4, 5, 6]

После печати [3, 4, 5, 6], которая представляет собой набор прошлых значений после печати 2, наблюдаемый интервал завершается, и поэтому оператор буфера больше не выдает.

Это минимум понятий, которые вам нужно знать об операторе буфера.