问题描述
我有一个 JavaScript 函数,它加载一个 csv 文件并将其内容粘贴到一个 c3js 图形中,该函数每 10 秒重新加载一次实时数据,它看起来像这样:
function parseData(createGraph) {
Papa.parse("../csv_files/traffic.csv",{
download: true,complete: function(results) {
createGraph(results.data);
}
});
}
function createGraph(data) {
var Arrx = ['x'];
var Arry = ['Frequency'];
var dates = [];
for (var i = 0; i < data.length-1; i++) {
if(moment(data[i][0],"DD-MM-YYYY",true).isValid()){
dates.push(data[i][0]);
}
}
var result = foo(dates);
for (var i = 0; i < result[0].length; i++){
Arrx.push(result[0][i]);
Arry.push(result[1][i]);
}
var chart = c3.generate({
size: {
width: 1050
},data: {
x: 'x',xFormat: '%d-%m-%Y',columns: [Arrx,Arry]
},axis: {
x: {
label: 'Date',type: 'timeseries',tick: {
format: '%d-%m-%Y'
}
},y: {
label: 'Frequency'
}
},bindto: '#chart'
});
}
问题是我必须在每次重新加载时加载文件,随着文件变大,它开始花费越来越多的时间,JavaScript 中是否有一种方法可以在开始时只加载一次,然后附加新日志实时到图表?
解决方法
在页面初始化时,如果 csv 数据可用,请检查本地/会话存储。如果不可用,则将 csv 数据加载/保存到本地/会话存储并继续下一步。
如果您需要覆盖本地存储检查,则将查询参数传递给 url。我想这对你有用。
这是localstorage的指南