【发布时间】:2019-02-16 05:32:57
【问题描述】:
我正在尝试执行 firstFunction(),它解析一个 csv 文件并返回一些数据,然后将其传递给 secondFunction() 以执行一些操作。我已经独立测试了它们并且它们都按预期工作,但是在firstFunction() 完成后我无法让secondFunction() 执行。这会导致“数据”在执行时未定义。
function parentFunc(){
firstFunction(function(data){
secondFunction(data);
});
}
function firstFunction(){
var inputFile = 'import.csv';
var dataOutput = [];
var colHead = [];
var parser = parse({delimiter: ','}, function(err, data){
colHead.push(data[0][0],data[0][1],data[0][2],data[0][3],data[0][4]);
for( i = 1; i<data.length; i ++ ){
var line = {[colHead[0]]:data[i][0],
[colHead[1]]:data[i][1],
[colHead[2]]:data[i][2],
[colHead[3]]:data[i][3],
[colHead[4]]:data[i][4]};
dataOutput.push(line);
}
});
var readStream = fs.createReadStream(inputFile).pipe(parser);
readStream.on('end', function(){
return dataOutput;
})
}
async function secondFunction(data){
for(i=0; i<data.length;i++){
//some operations with data, using await keyword.
}
}
parentFunc();
我觉得解决方案不应该那么难,可能是由于我的根本误解。
如果需要更多信息,请告诉我。
【问题讨论】:
-
如果您包含您编写的代码,我们可能会更容易看到问题所在。在这里,我们看不到
data是如何以及何时被填充的。 -
无法帮助您提供所提供的信息。需要知道这些函数中有什么
-
@LucaKiebel 用请求的信息更新了我的问题,谢谢。
-
firstFunction不return做任何事情。当您尝试在调用时传递回调时,该函数(还没有?)有回调参数。 -
@Bergi 它不返回
dataOutput吗?你能告诉我你的第二句话是什么意思吗?
标签: javascript node.js asynchronous synchronous