Например, у меня есть наблюдаемое, которое испускает число каждую секунду. Я хочу буферизовать их в массивы в течение 4 секунд. Но когда источник испускает число, которое делится на 5, я хочу немедленно его испустить, а не буферизовать.
// emit value in sequence every 1 second
// 0,1,2,3,4,5...
const source = interval(1000);
// buffer values for 4 seconds
const buffered = source.pipe(
buffer(interval(4000)),
filter(x => x.length > 0)
);
const subscribe = buffered.subscribe(val => console.log(val));
Мой ожидаемый результат:
[0,1,2,3] // buffered and emitted after 4 seconds
[5] // emitted immediately
[4,6,7,8] // buffered and emitted after 4 seconds
[10] // emitted immediately
[9,11,12,13]
// ... and so on
Stackblitz: https://stackblitz.com/edit/typescript-cdvc2d?file=index.ts