如何在node.js中读取多个csv文件



我试图读取多个csv文件,然后将它们作为属性添加到对象,但node.js的异步确实阻止了我这样做。

这是我试过的代码。

var Converter=require("csvtojson").core.Converter; 
var fs = require('fs');
var csvConverter=new Converter();
var data = {};
for (var i = 0; i < 10; i++)
{   
    var csvFileName="./data/String(i)".csv";
    csvConverter.on("end_parsed",function(jsonObj){
    data['file'+String(i)] = json;

    //read from file
    fs.createReadStream(csvFileName).pipe(csvConverter);
});

}

这会导致可怕的混乱,因为for循环在触发任何事件之前就完成了。我真的更喜欢同步解决方案,但我知道node.js根本不是为此而构建的。

所以我会很高兴,如果有人能帮助我了解如何修复这个异步。然而,这是我第一次遇到这样的问题。一小时前我还不知道异步代码的概念。

i是有问题的,因为你不能预测它将在end_parsed回调函数内,所以尝试:

var fileIndex = 0;
csvConverter.on('end_parsed', function (json) {
    data['file' + fileIndex] = json;
    if (fileIndex === 9) {
       // It is done, call the callback to finish processing
       callback(data);
    }
    fileIndex += 1;
});
var callback = function (data) {
    // Put callback code here
    console.log(data.file0);
};

最好的解决方法就是使用Promises

相关内容

  • 没有找到相关文章

最新更新