我目前有一个包含一些 Highcharts 图形的页面,大约有 22 个,它们受用户可选择的过滤器的影响。每个过滤器交互都会删除当前系列并添加新系列。
我从两种方法开始,第一种方法是有一个循环遍历所有保存的实例对象,删除每个系列,
while currentChart.series.length > 0
currentChart.series[currentChart.series.length - 1].remove()
然后,在另一个循环之后,遍历数组来搜索过滤器数据
currentChart.addSeries
name: operatorName
data: data
type: options.chartType
但这个实现结果相当繁重。
然后,我实现了一个超时,让插件喘口气,不要堆积太多,通过在每个循环之间设置 1 毫秒的超时,我获得了更好的性能,并且可以看到动画,但它使它有点迟缓。设置较高的超时时间会使页面难以导航,并且过滤器更改会堆积,因为整个图形更新将花费很多时间。
最佳答案
根据我的经验,当我有大量图表或数据点时,我通常会关闭动画。动画增加了很多处理开销,如果没有动画,highcharts 通常可以很好地处理大量数据。
我想您可以尝试删除该系列并一次为每个图表添加新的系列,而不是删除所有然后添加所有。我怀疑这会对您的页面响应能力产生很大的影响。
chart: {
animation: false
},
plotOptions: {
series: {
animation: false
}
},
关于javascript - 按需更新多个 Highcharts 实例的最佳性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18977112/