附加到字符串的范围问题

时间:2015-01-13 00:53:49

标签: javascript string node.js scope

我正在尝试使用节点csvtojson库转换CSV文件,查找文件中的某些数据,将数据添加到字符串,然后记录字符串(最终我将其写入文本文件) 。

JSON对象很好,我可以在函数中记录数据,但我不能使用+ =将它附加到我的字符串。我认为这是一个范围问题,但我不确定我哪里出错了。

//Converter Class
var Converter=require("csvtojson").core.Converter;

var fs=require("fs");

var capsuleFile="capsule-contacts.csv";
var capsuleFileStream=fs.createReadStream(capsuleFile);

//new csv to json converter instance
var csvConverter=new Converter({constructResult:true});

var fileToWrite = "";

csvConverter.on("end_parsed",function(jsonObj){
   for(var i = 0; i < jsonObj.length; i++) {
    if(jsonObj[i].Type == "Organisation") {
        console.log(jsonObj[i].Organisation.toString()); //this works
        fileToWrite += jsonObj[i].Organisation.toString();  
        fileToWrite += "     -     ";
        fileToWrite += jsonObj[i]["Email Address"].toString();
        fileToWrite += "     -     ";
        fileToWrite += jsonObj[i]["Work Phone"].toString();
        fileToWrite += "\n";
        console.log(fileToWrite); //this works
    }
   }

});

//this does not work
console.log(fileToWrite);

1 个答案:

答案 0 :(得分:0)

csvtojson执行转换 异步 ,因此您不能指望console.log(fileToWrite);显示正确的输出,因为end_parsed事件会在你的console.log(fileToWrite);执行完毕之后的某个时间才会发生。欢迎来到异步编程世界(和node.js)。