如何解决确保事件之间的时间间隔最小
我逐块接收一些数据,并希望以最小的时间距离进动数据点。 (您可以将其表述为throttleTime
,而不会丢失数据,或者将其表示为buffer
的相反内容)。
经过大量的尝试和谷歌搜索,我想出了以下解决方案:
dataChunkReceiver
.pipe(
switchMap(chunk => of(...chunk)),// spread chunk of data-points to distinct events
zip(interval(minimumInterval)),// make sure events don't get executed more often than minimumInterval
map(itemAndNumber => itemAndNumber[0]) // only forward the data-point
)
zip(interval(minimumInterval))
解决方案可以很好地与鼠标事件配合使用,但不能与switchMap和块配合使用。当块出现的次数多于minimumInterval
时,它仍然像魅力一样工作-但如果块变慢则不会。我不知道为什么,也许有人可以启发我?
要查看问题,try my Stackblitz将chunkInterval
(新数据块到达的间隔)设置为2000,而minimumInterval
为400。如您所见,所有数据每个块中的点将在同一时间处理。当您将chunkInterval
设置为400时,它们会按预期每500毫秒显示一次。
对于2000 chunkInterval
,我希望数据点为ms
2000 | 2500 | 3000 | 4000 | 4500 | 5000 | 6000 | 6500 | 7000
我确定解决方案一定是一个微妙的误解,请帮忙找到它!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。