Я пытаюсь выполнить firstFunction()
, который анализирует CSV-файл, возвращает некоторые данные и передает их secondFunction()
, чтобы затем выполнить некоторые операции. Я протестировал оба независимо, и они оба работают как задумано, но я не могу заставить secondFunction()
выполнить после завершения firstFunction()
. Это приводит к тому, что «данные» не определены во время выполнения.
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();
Я чувствую, что решение не должно быть таким жестким, и, вероятно, это связано с фундаментальным недоразумением с моей стороны.
Пожалуйста, дайте мне знать, если требуется дополнительная информация.