我是新來的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
當你加載你的文件時,你已經導出了你的對象。如果你把所有的異步代碼放在承諾中並正確地鏈接它們,那麼所有這些都是你想要做出口的地方,等等。你甚至不需要承諾 - 只是最終的回調。 –