0
使用node.js,我連接到我的redis數據庫並將值返回給數組。但是,爲了返回值,我必須使用回調函數將它們移出範圍。我見過很多關於回調函數的例子,而我的工作就像所見過的所有其他例子一樣,但是,當我在res.render
中調用該函數作爲選項時,它會嘗試返回父函數而不是回調函數。如何將回調函數的值返回到players:
選項?Javascript回調返回值
父函數
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);
}))
});
};
從異步回調返回是沒用的。您必須反轉邏輯,並從您的回調中調用res.render。 – bfavaretto