关闭通知程序发出时不清除缓冲区的 RxJs 缓冲区

时间:2021-04-09 21:18:44

标签: javascript rxjs buffer

有没有一种方法可以使用 RxJs 缓冲区而不用在 ClosedNotifier 发出或使用其他 RxJs 运算符实现相同结果时清除缓冲区?

来自https://rxjs.dev/api/operators/buffer

<块引用>

缓冲传入的 Observable 值直到给定的closureNotifier Observable 发出一个值,此时它发出缓冲区 输出 Observable 并在内部启动一个新的缓冲区,等待 下次closuresNotifier 发出。

我想做同样的事情,除了在 ClosedNotifier 发出后继续在同一个缓冲区上缓冲传入的值。

1 个答案:

答案 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

相关问题