【发布时间】:2015-08-23 10:48:52
【问题描述】:
我正在尝试读取多个 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 根本不是为此而构建的。
因此,如果有人可以帮助我了解如何解决此异步问题,我会很高兴。然而,这是我第一次遇到这样的问题。一个小时前我还不知道异步代码的概念。
【问题讨论】:
-
您的示例中有很多错误/格式问题,应予以清理,以消除对问题根源的任何混淆。我提交了修改以更正它们。
-
学习使用承诺。 Bluebird 是一个很棒的 Promise 库,可以让你的部分代码同步
标签: javascript node.js file csv asynchronous