首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从嵌套函数获取返回值

从嵌套函数获取返回值
EN

Stack Overflow用户
提问于 2012-10-23 03:55:01
回答 2查看 734关注 0票数 0

新手到脚本,所以请是友好的。

正在尝试使用jquery-csv解析器从本地文件创建图表。使用google viz。

这段代码似乎无法获得返回值。需要所选解析文件的返回值。

使用回调更好吗?我该如何实现它呢?我试过了,但似乎做不对。

代码语言:javascript
复制
 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); };

}

我已经使用了修改后的代码在屏幕上以表格的形式显示数据,但在将数据发送到google服务器时遇到了麻烦。

任何建议或指示都非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2012-10-23 04:00:11

“使用回调更好吗?”

是的,这将是正确的解决方案

“我该如何实现它?”

  1. chartData函数定义第二个参数。
  2. 当您调用chartData时,将回调作为第二个参数传递给事件处理程序,并以调用任何函数的相同方式调用该回调,但将所需的数据传递给它。

代码语言:javascript
复制
                   // 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);
     };
 }

所以你可以这样调用它:

代码语言:javascript
复制
chartData('file/path', function(parsed) {
    console.log(parsed);
});
票数 1
EN

Stack Overflow用户

发布于 2012-10-23 04:01:20

首先,请不要要求我们友善,因为这是您的“不友善”假设

通常,您不能从异步函数返回值。你应该考虑为什么你想要返回值,看看你是否可以从另一个角度看它。例如,您需要如何处理parsedData..填充文本区域?,将一些元素附加到Dom?.那就在这里做吧!

让我们知道您需要从parsedData获得什么,我们可以提供帮助。

最后,在万不得已的情况下,您可以将响应附加到全局对象(如window ),但这会产生一系列其他问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13018804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档