Поиск почти невозможно захватить ответ HTTP-запросов в цикле как массив. Я могу видеть массив в console.log, но когда я передаю массив как ответ http-сервера, я получаю пустой массив. Что я делаю неправильно, или есть ли лучшие способы сделать это?Выполнение http-запросов в looppoints
Код:
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);
});
Я знаю, что есть много разговоров о блокировании процесса в цикле, но нет окончательного рекомендуемый способ иметь дело с HTTP вызовов в цикле. Спасибо.
Важный элемент элементов в выходной массиве? Должен ли он соблюдать порядок http-запросов? –
Порядок не важен в моем случае, но хотел бы знать, как добиться порядка. – noexpert