定期更新Highcharts系列数据后,浏览器崩溃

时间:2017-04-29 16:58:32

标签: javascript highcharts papaparse

我有一个具有实时图表的应用程序。每隔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([])正确地执行此操作还是应该以不同方式执行此操作?

浏览器继续崩溃,我不确定下一步该做什么。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我正在运行HighCharts 4.2.5并升级到5.0.10并解决了这个问题。我曾遇到过一些帖子,其中有一些与版本4相关的内存泄漏。