有没有一种方法可以使用 RxJs 缓冲区而不用在 ClosedNotifier 发出或使用其他 RxJs 运算符实现相同结果时清除缓冲区?
来自https://rxjs.dev/api/operators/buffer:
<块引用>缓冲传入的 Observable 值直到给定的closureNotifier Observable 发出一个值,此时它发出缓冲区 输出 Observable 并在内部启动一个新的缓冲区,等待 下次closuresNotifier 发出。
我想做同样的事情,除了在 ClosedNotifier 发出后继续在同一个缓冲区上缓冲传入的值。
答案 0 :(得分:1)
如果我理解正确,您希望每次都发出累积结果。 scan
将完美地用于此:
const buffered$ = timer(0, 1000).pipe(
buffer(interval(3000)),
scan((acc, cur) => [...acc, ...cur], [])
);
// output:
// - [ 0, 1, 2 ]
// - [ 0, 1, 2, 3, 4, 5 ]
// - [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
这是一个有效的 StackBlitz demo。