Сбой браузера после периодического обновления данных серии Highcharts

У меня есть приложение с графиком в реальном времени. Каждые 10-15 секунд появляются новые данные и URL-адрес AWS S3 отправляется в браузер через веб-сокет.

Обратный вызов получает S3-URL файла CSV, а papaparse используется для загрузки и обработки данных. При проверке инструментов разработчика Chrome количество объектов javascript продолжает увеличиваться, и я предполагаю, что это как-то связано с крахом браузера. Вот обратный звонок:

Примечание: initialData - это массив со свойствами ряда по умолчанию, включая пустое свойство "data"

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 ответ

Я запускал HighCharts 4.2.5 и обновился до 5.0.10, и это решило проблему. Я столкнулся с некоторыми сообщениями, что были некоторые утечки памяти, связанные с версией 4.

Другие вопросы по тегам