我有一个具有实时图表的应用程序。每隔10-15秒,新数据可用,AWS S3 URL通过Web套接字发送到浏览器。
回调获取CSV文件的S3 url,papaparse用于下载和处理数据。检查Chrome开发工具,javascript对象数量继续增加,我假设这与浏览器崩溃有关。这是回调:
注意:initialData是一个具有默认系列属性的数组,包括一个空的"数据"属性
var shotCallback = function (data) {
if (hchart.series.length) {
for (var i = 0; i <= hchart.series.length - 1; i++) {
hchart.series[i].setData([]);
}
hchart.redraw();
} else {
initialData.forEach(function (item, i) {
hchart.addSeries(angular.extend({}, initialData[i]), false);
});
}
Papa.parse(data.url, {
download: true,
fastMode: true,
worker: true,
dynamicTyping: true,
skipEmptyLines: true,
step: function (results) {
if ( ! firstRow) { // first row has column names
results.data[0].forEach(function (item, i) {
if (i > 0 && i <= initialData.length) {
hchart.series[i - 1].addPoint(item, false);
}
})
}
firstRow = false;
},
complete: function () {
hchart.redraw();
}
});
};
这会加载数千个数据点,但性能非常好。
我的问题是:当我清除以前的数据集时,我是使用.setData([])
正确地执行此操作还是应该以不同方式执行此操作?
浏览器继续崩溃,我不确定下一步该做什么。
感谢任何帮助。
答案 0 :(得分:1)
我正在运行HighCharts 4.2.5并升级到5.0.10并解决了这个问题。我曾遇到过一些帖子,其中有一些与版本4相关的内存泄漏。