我现在需要用echart同时渲染3个散点图,且每50ms刷新一次数据(利用webSocket从后端获取),但是三个图表的高频率使用setOption(),,导致其阻塞了JS程序,无法快速响应后台大量的密集的数据(50ms获取一次实时数据),也无法很好地流畅渲染图表,因为浏览器的JS是单线程的,求问各位有没有什么好的解决方案?算是技术瓶颈了。
(PS:三个图每次setOption()完总共花了120ms,根据电脑算力而定;各位可以自己用for循环模拟一下)
我现在需要用echart同时渲染3个散点图,且每50ms刷新一次数据(利用webSocket从后端获取),但是三个图表的高频率使用setOption(),,导致其阻塞了JS程序,无法快速响应后台大量的密集的数据(50ms获取一次实时数据),也无法很好地流畅渲染图表,因为浏览器的JS是单线程的,求问各位有没有什么好的解决方案?算是技术瓶颈了。
(PS:三个图每次setOption()完总共花了120ms,根据电脑算力而定;各位可以自己用for循环模拟一下)
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
所以你不一定非得以50ms的间隔刷新数据,其实以更低频率刷新,图像也能有渐变的动画效果。
也可以试试使用这个appendData接口,这个接口添加新数据的时候,不会清除已经渲染的部分。也就是说这个接口是一个“增量”更新的接口。
如果使用echarts 5支持初始化的时候传递
useDirtyRect
开启脏矩形,在canvas模式下可以提升渲染性能。针对少量数据变化的场景,每次只渲染更改的部分,提升渲染性能。