我的NodeJS服务器上有这个代码:
function GetXML() {
fs.readFile('../slideshow.xml.old', function(err, data) {
parser.parseString(data, function (err, result) {
var json = JSON.stringify(result);
console.log(json);
return json;
});
});
}
console.log()
运作良好,但事实并非如此:
.get('/', function(req, res) {
res.end(GetXML());
};
它返回undefined
这是非常逻辑的,因为函数是嵌套的(我认为?)。但我不知道如何让GetXML()返回一个值。
答案 0 :(得分:1)
它正在返回undefined
,因为您正在尝试同步执行异步任务。您必须将回调传递给GetXML()
函数,例如:
function GetXML(cb) {
fs.readFile('../slideshow.xml.old', function(err, data) {
parser.parseString(data, function (err, result) {
var json = JSON.stringify(result);
cb(json);
});
});
}
,并在.get
函数中正确调用它:
.get('/', function(req, res) {
GetXML(function (json) {
res.end(json);
});
};
您应该查看this article,了解callbacks
在node.js中的工作方式。
答案 1 :(得分:0)
“GetXML”未返回值。它可以改为:
function GetXML() {
return fs.readFile('../slideshow.xml.old', function(err, data) {
parser.parseString(data, function (err, result) {
var json = JSON.stringify(result);
console.log(json);
return json;
});
});
}