使用node.js,我连接到我的redis 数据库并将值返回到数组中。但是,为了返回值,我必须使用回调函数将它们移出范围。我见过很多关于回调函数的示例,我的示例与我见过的所有其他示例一样,但是,当我在 res.render
中将该函数作为选项调用时,它会尝试返回父函数而不是回调。如何将回调函数的值返回给 players:
选项?
父函数
function openPlayers(callback) {
var players = [];
db.hgetall("players", function(err, objs) {
// Objects of Response
for (var k in objs) {
// Items are the individual key-value object
var newPlayer = {};
var items = JSON.parse(objs[k]);
for (var x in items) {
// x is the key for each object
newPlayer[x] = items[x];
}
players.push(newPlayer);
}
callback(players);
});
}
回调函数的位置
exports.newPlayer = function(req, res) {
res.render('newPlayer', {
title: 'New Player',
players: (openPlayers(function(ps) { //callback function
return(ps);
}))
});
};
最佳答案
好吧,你不能,因为 openPlayers
是异步的并且不返回任何值,这就是它需要回调的原因。然而,你可以做的是这样的:
exports.newPlayer = function(req, res) {
openPlayers(function (ps) {
res.render('newPlayer', {
title: 'New Player',
players: ps
});
});
};
关于JavaScript 回调返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433601/