新手写脚本所以请善待。
尝试使用jquery-csv解析器从本地文件创建图表。使用谷歌即
这部分代码似乎无法从中获得返回值。
需要选择已解析文件的返回值。
使用回调更好吗?我将如何实现?已经尝试但似乎无法做到正确。
function chartData(fileToParse) {
var reader = new FileReader();
reader.readAsText(fileToParse);
reader.onload = function(){
var csv = event.target.result;
var parsedData = $.csv.toArrays(csv,{onParseValue:$.csv.hooks.castToScalar});
return parsedData
};
return reader.onload.value;
reader.onerror = function(){ alert('Unable to read ' + file.fileName); };
}
我已经使用了这段经过修改的代码,以便在屏幕上以表格形式显示数据,但是已经将它带到谷歌服务器上。
任何建议或指示都非常感激。
答案 0 :(得分:1)
“使用回调会更好吗?”
是的,这将是正确的解决方案
“我将如何实现?”
为chartData
函数定义第二个参数。
当您调用chartData
时,将回调作为第二个参数传递。
在事件处理程序中,以与调用任何函数相同的方式调用回调,但将所需数据传递给它。
// receive it-----v
function chartData(fileToParse, callback) {
var reader = new FileReader();
reader.readAsText(fileToParse);
reader.onload = function () {
var csv = event.target.result;
var parsedData = $.csv.toArrays(csv, {
onParseValue: $.csv.hooks.castToScalar
});
callback(parsedData); // call it
};
reader.onerror = function () {
alert('Unable to read ' + file.fileName);
};
}
所以你会这样调用它:
chartData('file/path', function(parsed) {
console.log(parsed);
});
答案 1 :(得分:0)
首先,请不要让我们要善待,因为那是你的“不友好”假设
通常,您无法从异步函数返回值。您应该考虑为什么要返回一个值,看看是否可以从另一个角度查看它。例如,你需要用parsedData做什么?填充textarea ?,将一些元素附加到Dom?..然后就在那里做!
让我们从parsedData了解您的需求,我们可以提供帮助。
最后,在绝望中,您可以将响应附加到全局对象(如窗口),但这会产生许多其他问题