javascript - RxJS:使用定时间隔对大数组进行分块并将其用于渲染

标签 javascript rxjs

有一个大数组,比如长度为 100。每个数组包含一个包含 50 多个项目的子数组。 (一种二维数组)

一次渲染所有内容非常耗时,并且可能占用更多浏览器内存。决定继续将数据集分块为 5 并呈现它们。也就是说,将数据渲染分块,然后获取下一个 block 并渲染它。基于 1 秒的间隔。

这在 RxJS 中是如何实现的?

尝试过:

Rx.Observable.range(0, 10).map(i => data[i]).subscribe(...)

这需要前 10 条记录。所以我写了一个递归函数,将 10 更改为 iterator + 10,但是渲染数组项需要很多时间。尝试使用:

Rx.Observable.interval(0, 500).take(data.length).map(i => data[i]).subscribe(...)

这很好用。但这需要 1 来渲染每 500 毫秒的时间空间。我想俱乐部第一和第二。按 10 分块使用 500 毫秒渲染并获取下一个 block 。

最佳答案

您可以尝试使用 buffer 对数组进行分块。这假定 process 函数是同步的。

Rx.Observable.from(bigArray)
  .bufferWithCount(chunkSize)
  .do(process(chunk))

也就是说,如果 process 函数是同步的,为什么还要使用 Rxjs?将数组拆分为 block (参见 Split array into chunks 了解如何执行此操作)并在每个 block 上执行 process 函数。它可能更快并且占用更少的内存。

关于javascript - RxJS:使用定时间隔对大数组进行分块并将其用于渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739294/

相关文章:

javascript - ActivatedRoute 的 Angular promise 不适用于 Typescript 等待

javascript - 尽管导入,但属性过滤器不适用于 Observable<any> 类型

angular - 如何在 Angular 6 中再次触发 HttpGet 请求?

ngOnDestroy 中缺少带有 takeUntil : What happens when . next() 的 Angular Observable 销毁

javascript - 我如何设置noty通知的高度和宽度

javascript - 更改单选按钮上的标签边框颜色。样式化组件和 React JS

javascript - 页面跳转时请求丢失

javascript - 如何为 flexDirection=row 设置alignSelf

javascript - 停止 document.ready 函数上的重定向/刷新

javascript - 用 observable 替换回调 hell