【发布时间】:2016-08-24 07:25:34
【问题描述】:
发现几乎不可能将循环中的 http 请求的响应捕获为数组。我可以在 console.log 中看到该数组,但是当我将数组传递为 http 服务器的响应时,我得到一个空白数组。我做错了什么,还是有更好的方法来做到这一点?
代码:
router.route('/uprns').post(function(request, response){
response.setHeader('content-type', 'application/text');
console.log('first element from the array is '+request.body.UPRNS[0]);
console.log('Number of items in array is '+request.body.UPRNS.length);
if (request.body.UPRNS.length == 0) {
response.send( 'no UPRNS in request' );
}
var output = [];
var obj = '';
for( var i = 0; i < request.body.UPRNS.length; i++) {
obj = request.body.UPRNS[i];
//Make HTTP calls to
var options = {
host: 'orbisdigital.azure-api.net',
path: '/nosecurity/addresses?uprn='+obj // full URL as path
};
callback = function(res) {
res.on('data', function (chunk) {
output.push(chunk.toString());
});
//the whole response has been recieved
res.on('end', function () {
console.log(output);
});
}
Https.request(options, callback).end();
}
response.send(output);
});
我知道在 for 循环中有很多关于阻塞进程的讨论,但是没有明确的推荐方法来处理循环中的 http 调用。 谢谢你 。
【问题讨论】:
-
输出数组中元素的顺序很重要吗?他应该遵守http-requests的顺序吗?
-
顺序在我的情况下并不重要,但也想知道如何实现顺序。
标签: node.js loops httprequest nonblocking