编辑以尝试增加清晰度:
我有两个文件:number-crunching.js和chart.html。
number-crunching.js
有一个JSON对象:
var data = [
{
"mother": "Ellen",
"father": "Bob",
"pet": "cat",
"age":50,
"hairLength":10
},
{
"mother": "Sandra",
"father": "Jeff",
"pet": "dog",
"age":18,
"hairLength":2
}
];
然后它有一个run
函数来处理该数据并返回一个多维数组,如下所示:
[
['mother', 'father', 'pet', 'age', 'hairLength'],
['Ellen', 'Bob', 'cat', 50, 10],
['Sandra, 'Jeff', 'dog', 18, 2]
]
创建此数组的所有内容都包含在一个名为run
的函数中,该函数返回已完成的数组。
在第二个文件chart.html(有一些JS)中,我包含了number-crunching.js并调用了run函数并将该数组存储在chart.html中。
var editedData = run(); editedData现在包含上面的数组。
然后我在html页面的图表中可视化editedData的内容。
图表需要永远加载,因为它每次都在run函数中执行所有计算,这涉及多次循环遍历JSON对象,这是一个非常大的对象。因此,在页面上加载需要永远。
我想要做的是分开这些文件。因此,我不想在run
中调用chart.html
,而是将数组存储在chart.html中。所以,我想进行一次数字运算并以某种方式保存数组,所以我不必再进行数字运算了。
基本上,我只想使用数字运算和run
一次。也就是说,它应该将run
的结果保存到某处,以便我可以将数组复制到chart.html文件中并将其用于我的Web应用程序。
我该怎么做?感谢您的帮助,对不起,如果第一次不清楚的话。
答案 0 :(得分:0)
您需要查看HTML5's FileSystem。
您需要创建一个文件并以JSON格式将数组推入其中。
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function errorHandler(err) {
console.log("Error happened");
console.log(err);
}
var yourdata = [
['mother', 'father', 'pet', 'age', 'hairLength'],
['Ellen', 'Bob', 'cat', 50, 10],
['Sandra', 'Jeff', 'dog', 18, 2]
];
function onInitFs(fs) {
fs.root.getFile('data.json', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e);
};
var json = JSON.stringify(yourdata);
console.log(json);
var blob = new Blob([json], {type: "application/json"});
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024, function(grantedBytes) {
// Is this a bug? This function is called instantly, i didn't even granted permission or anything. You need to refresh after granting permission.
window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, errorHandler);