javascript - RXJS 缓冲区可观察到最大和最小大小
问题描述
我在 rxjs 中很菜鸟。我想要一个基本上从小尺寸(minSize)开始的缓冲区,直到它达到某个极限maxSize。
buffer(minSize, maxSize, startEvery)
所以它应该发出例如(rxjs 6 语法)。
source(1,2,3,4,5,6,7,8).pipe(buffer(2, 4, 1))
.subscribe( res => console.log(res));
-> [1,2]
-> [1,2,3]
-> [1,2,3,4]
-> [2,3,4,5]
-> [3,4,5,6]
and so on
解决方案
您可以使用scan
:
of(1,2,3,4,5,6,7,8).pipe(
scan((acc, cur) => [...acc, cur].slice(-4), [])
).subscribe(arr => console.log(arr))
这将输出:
[1]
[1,2]
[1,2,3]
[1,2,3,4]
[2,3,4,5]
[3,4,5,6]
如果你想摆脱[1]
使用scan(), skip(1)
推荐阅读
- c# - 在卸载或升级之前运行自定义操作
- crashlytics - 了解 Fabric 的每日摘要
- php - 如何使用 WordPress Customizer API 在自定义 WordPress 主题中添加图像滑块
- web-scraping - 在没有表格/列表的情况下将数据从网站导入 Google 表格
- python - 如何将 for 循环中的每个迭代分配给数据库存储的变量
- encryption - 如何找到具有一组字符串输入和十六进制输出的解密算法?
- javascript - 尽管使用了 jQuery,但 datepicker 无法正常工作
- ios - popToRootViewControllerAnimated:总是返回 null
- cordova - 如何解决 Playstore 中的图片上传问题?
- java - 我从 Spring Boot 安全设置中收到“访问此资源需要完全身份验证”响应