我是新来的node.js,我有一些代码无法正常工作。我认为这个问题是在异步功能。这段代码非常简单。读取一些xml,将值分配给变量,将这些变量分配为用于连接另一个node.js文件中的数据库的属性。问题是读取xml后变量不会更新。变量不会在node.js中异步更新
下面的代码,
//set some variables
userXML = "bgdf";
passwordXML = "";
serverXML = "";
databaseXML = "";
//parse the xml
var fs = require('fs'),
xml2js = require('xml2js');
var parser = new xml2js.Parser({explicitArray : false});
fs.readFile(__dirname + '/variables.xml', function(err, data) {
parser.parseString(data, function (err, result) {
userXML = result.variables.user;
passwordXML = result.variables.password;
serverXML = result.variables.server;
databaseXML = result.variables.database;
//What's in this variables? The right values!
console.log(userXML);
console.log(passwordXML);
console.log(serverXML);
console.log(databaseXML);
})
});
exports.dev = {
db: {
//What's in these variables? The wrong values! Values from top of file - never updated
user: userXML,
password: passwordXML,
server: "myservername.net",
database: databaseXML
}
};
我尝试添加了READFILE后。那么()承诺,但后来我的其他文件说,“开发”是不确定的。
你有没有试过检查错误的'err'变量? – Derek
当你加载你的文件时,你已经导出了你的对象。如果你把所有的异步代码放在承诺中并正确地链接它们,那么所有这些都是你想要做出口的地方,等等。你甚至不需要承诺 - 只是最终的回调。 –