我现在遇到麻烦,我不知道如何使用异步来做这件事。 我有一个文件调用“jsonFileData.js”,这里是:
// jsonFileData.js
var fs = require('fs'),
Converter = require('csvtojson').Converter,
csvConverter = new Converter();
function jsonFile(filename) {
csvConverter.on("end_parsed",function(jsonObj)
return jsonObj;
});
fs.createReadStream('../csv_parse/' + filename + '.csv').pipe(csvConverter);
}
module.exports = {
language: jsonFile('language'),
};
另一个文件调用“main.js”
// main.js
var jsonFile = require('./jsonFileData');
console.log(jsonFile.language);
当我运行“main.js”时,它显示为“未定义”。如何制作“var jsonFile = require('./ jsonFileData');”在开始打印结果“jsonFile.language”之前完全运行? 感谢您阅读我的问题。
答案 0 :(得分:0)
您的异步回调不对。与我在下面所做的更改进行比较。
// jsonFileData.js
var fs = require('fs'),
Converter = require('csvtojson').Converter,
csvConverter = new Converter();
function jsonFile(filename,callback) {
csvConverter.on("end_parsed",function(jsonObj) {
return callback(null, jsonObj);
});
fs.createReadStream('../csv_parse/' + filename + '.csv').pipe(csvConverter);
}
module.exports = {
language: jsonFile
};
在main.js
文件中:
// main.js
var jsonFile = require('./jsonFileData');
jsonFile.language('language', function(err, jsonObj){
if(err){
console.log(err);
return;
}
console.log(jsonObj);
console.log("Hello World!"); // Edit based on comment
});