RxJS 缓冲直到改变

标签 rxjs

是否有创建“更改前的缓冲区”功能的好方法?基本上,我有一个像 [1,1,1,2,2,2,4,5,5] 这样的排序的可观察对象,我想创建一个可观察对象的可观察对象(或者任何集合,真的)像 [[1,1,1], [2,2,2], [4], [5,5]]

groupBy 理论上可以在这种情况下工作,但它会导致我的应用程序消耗大量内存,因为它不会立即关闭组可观察对象,这是不必要的,因为我知道原始可观察对象已排序。

最佳答案

也适用于即时 Observables (rxjs 5) 的解决方案:

source
  .concat(Observable.of('~'))
  .scan(({ buffer }, item) => buffer.length === 0 || buffer.includes(item) ? 
        ({ buffer: [...buffer, item] }) : 
        ({ buffer: [item], output: buffer }), { buffer: [] })
  .pluck('output')
  .filter(x => x);

http://jsbin.com/ruyozinali/1/edit?js,console

关于RxJS 缓冲直到改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854536/

相关文章:

Angular/RxJS : keep interval running even in case of an error

typescript - [Typescript][RxJS] 为什么返回部分类型的可观察对象时没有类型错误?

javascript - 寻找提前返回的 RxJs 运算符,跳过下面的运算符,而不是 filter() 或 skip()

typescript - RXJS Angular - 使用 .subscribe 和 Observable 进行错误处理

javascript - 触发 takeUntil 操作时执行函数

javascript - RXJS - 如果可观察值中的值满足特定条件,则执行函数

validation - 自定义异步验证在返回 promise 时不起作用

angular - RxJs Observable in Observable from Array

angular - Angular 6 中的倒数计时器

angular - @Angular 中的 Lodash 替换