Node.js有多个回调

时间:2016-11-18 01:01:33

标签: javascript node.js express url-routing

我正在尝试从steam获取所有用户项,因此我需要使用请求模块从steamcommunity获取json文件。问题是我不知道如何将json返回 app.js 并通过路线。

var request = require('request');

var userItems = function(req, res){
    var userItems = request('http://steamcommunity.com/profiles/'+req+'/inventory/json/730/2', function (error, response, body) {
      if (!error && response.statusCode == 200) {

        var info = JSON.parse(body);
        return res(info);

      }
    });

}

module.exports.userItems = userItems;

理念是下一个:

app.get('/account/:id', ensureAuthenticated, ensureID, function(req, res){
  res.render('account', { 
    user: req.user,
    items: userItems(req.params.id, res)
  });
});

我很开心,我会从一开始就学习,但是现在我只需要工作,因为我的时间很短。谢谢。

1 个答案:

答案 0 :(得分:-2)

userItems是一个异步操作,所有使用它结果的代码都必须在回调中。试试这个:

app.get('/account/:id', ensureAuthenticated, ensureID, function(req, res){
  userItems(req.params.id, function(info) {
    res.render('account', { 
      user: req.user,
      items: info
    });
  });
});

我认为下一步应该是错误处理。