Finden Sie es fast unmöglich, die Antwort von HTTP-Anfragen in einer Schleife als ein Array zu erfassen. Ich kann das Array in console.log sehen, aber wenn ich das Array übergeben, um die Antwort von HTTP-Server zu sein, bekomme ich ein leeres Array. Was mache ich falsch oder gibt es bessere Möglichkeiten?macht HTTP-Anfragen in Nodejs Schleife
Code:
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);
});
Ich weiß, dass es eine Menge Gerede über Verfahren zur Schleife in einer Blockierung, aber es gibt keinen definitiven empfohlene Weg mit http Anrufen in einer Schleife zu beschäftigen. Danke.
Die Reihenfolge der Elemente im Ausgabe-Array ist wichtig? Sollte er die Reihenfolge der http-Anfragen einhalten? –
Die Reihenfolge ist in meinem Fall nicht wichtig, würde aber gerne wissen, wie man den Auftrag auch erreicht. – noexpert