Сбой браузера после периодического обновления данных серии 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.