2017-12-06 14 views
0

jsonObjをグローバル変数に保存します。ただし、動作しません。 Node.js:csvtojsonを使用してCSVをJSONに変換した後に、jsonObjをグローバル変数に保存する方法

var jsonContent; 

csvConverter.on("end_parsed", function(jsonObj){ 
// console.log(jsonObj); 
     jsonContent = jsonObj; 
}); 

console.log(jsonContent); 

jsonObj正しく内部{...}印刷することができます。しかし、なぜそれをグローバル変数に渡すことはできませんか? "console.log(jsonContent);"の結果まだ定義されていません。

undefined 

答えて

2

jsonContentそれはあなたのJSファイルにどこでも利用可能であるという意味でグローバルです。問題はcsvConverter.onの非同期であるため、プログラムの実行中にプログラムをブロックしないということです。そのため、csvConverter.onがコールバックを実行するまで、jsonContentを使用することはできません。

あなたがjsonObjを使用する必要がある場合は、csvConcerterの実行に後あなたのコールバックを、それを使用する必要があります。そのためには、ロジックを関数にラップし、コールバックが呼び出されるとその関数を実行することができます:

var jsonContent; 

csvConverter.on("end_parsed", function(jsonObj){ 
    jsonContent = jsonObj; 
    runLogic(); 
}); 

function runLogic() { 
    // this function will run after csvConverter.on callback is called 
    console.log(jsonContent); 
} 
関連する問題