variables没有在http请求中定义和表示

在我明确的行动get('items')我打电话给一个外部JSON-API,并想在我的本地响应呈现API响应。

目前我得到一个错误,我的项目variables没有定义在HTTP请求内。 这似乎是一个范围问题,但我没有find一个解决scheme。

什么是完成这个最好的方法?

 var http = require('http'); router.get('/items', function (req, res, next) { var items; var RemoteRequest = http.request({ method: 'GET', path: 'myurl' }, function (response) { response.on('data', function (data) { items = JSON.parse(data); }); }); RemoteRequest .end(); res.render('new', {items: items} ); // or res.json({items: items}); }); 

看起来你并没有等待你的http请求返回,你需要移动res.render('new', {items: items} ); 进入callback:

 var http = require('http'); router.get('/items', function (req, res, next) { var items; var RemoteRequest = http.request({ method: 'GET', path: 'myurl' }, function (response) { response.on('data', function (data) { items = JSON.parse(data); res.render('new', {items: items} ); // or res.json({items: items}); }); }); RemoteRequest .end(); });