我如何在Node js中管理异步

How can I manage asynchronous in Node js

本文关键字:管理 异步 js Node      更新时间:2023-09-26

我现在遇到了麻烦,我不知道如何使用异步来做到这一点。我有一个名为"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"时,它出现" undefined "。我怎样才能使"var jsonFile = require('./jsonFileData');"在开始打印结果"jsonFile.language"之前完全运行?谢谢你阅读我的问题

你的异步回调是不对的。

// 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
});