发送函数的响应以在expressjs

时间:2015-09-28 19:47:23

标签: javascript node.js express

我试图在快速服务器上沿着我的路线返回来自api的JSON数据。我对nodejs如何处理这种操作感到有些困惑。我在同一个文件中有一个函数和一个路由,路由可以工作,因为我得到了返回的视图,以及我想要的数据在控制台中。路线和方法如下所示:

function getData() {
    request(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
          console.log(body) // Show the HTML for the Google homepage.
          return response.body; 
        };
    });
};

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: 'About', data: getData() });
});

我希望在回复路线时来自getData()的数据。我认为这样做会,但它只会将数据打印到控制台,我看不出问题。

1 个答案:

答案 0 :(得分:4)

由于http请求的异步性质,这根本不可能。您必须重新构建它才能进行回调。

function getData(callback) {
    request(url, function (error, response, body) {
        if (error) {
            return callback(error);
        }
        if (response.statusCode == 200) {
          console.log(body) // Show the HTML for the Google homepage.
          //return response.body; 
          callback(null, response.body);
        } else {
            callback(response.statusCode);
        }
    });
};

/* GET home page. */
router.get('/', function(req, res, next) {
    getData(function (err, data) {
        if (err) {
            return next(err);
        }
        res.render('index', { title: 'About', data: data });
    });    
});