JavaScript 回调返回值

标签 javascript node.js callback

使用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/

相关文章:

javascript - 检查共享主机是否允许nodejs

javascript - javascript中如何退出回调循环

javascript - 如何在 React Native fetch 中使用授权 header 来使用 Yelp API 发出获取请求

javascript - 使用office.js插入word后失去选择

javascript - Angular 数字被解释为字符串、表格分页

javascript - Passport.js req.user 返回 : 'Promise { false }' - How do I get the current sessions' username?

node.js - Promise 超时后停止执行

javascript - 带有文本文件和硬编码回调的跨域 JSONP

javascript - 为什么 onpropertychange 对我不起作用?

javascript - 尝试在 iOS Safari 8 中存储 blob 会抛出 DataCloneError