访问和返回内部函数的数据

时间:2018-03-17 16:59:03

标签: javascript node.js

读取CSV文件,我无法返回读取的数据。 console.log(data)包含我需要的内容,但它不会返回data(例如,在调用readCSV函数时):

export default function readCSV(filename) {
   let parser = parse({columns: true, trim: true, skip_empty_lines: true}, function(err, data){
       console.log(data);
       return data;
    });

    fs.createReadStream(__dirname + '/' + filename).pipe(parser);
    return parser;
}

这给了我解析器实例而不是数据 - 尝试了它的许多变体。 如何返回data我在JS中作为一个概念缺少什么? 我正在使用node-csv-parse lib。

1 个答案:

答案 0 :(得分:2)

我猜它是因为parse()是异步功能。您可能需要另一个回调来检索值,或者使用新的时尚方法来使用promises:

export default function readCSV(filename) {
   return new Promise((resolve, reject) => {
       let parser = parse({columns: true, trim: true, skip_empty_lines: true}, function(err, data){
       if (err)
           reject();
       else
           resolve(data);
    });
     fs.createReadStream(__dirname + '/' + filename).pipe(parser);
   })
}

然后你会使用这样的:

readCSV("somefile").then((data) => {
   console.log(data)
})
.catch(()=>{
   console.log("Something went wrong")
})

或使用异步功能:

async function doThing() {
   let data = await readCSV("somefile");
   console.log(data)
}