Ich habe eine Schleife, die iteriert über Array und in jeder Iteration Ich habe eine HTTP-Anfrage zu tun, wie folgt aus:Funktion mit Asynchron-Anfrage in Knoten js
var httpsRequest = require('request')
var getData = function(id) {
var result;
httpsRequest({
url: 'https://link/'+id,
}, (error, resp, body) => {
if(resp.statusCode == 200) {
result = JSON.parse(body);
}
});
//here I would like to wait for a result
}
var data = [];
for(row in rows) {
data.push(getData(row.ID))
}
resp.send(JSON.stringify(data)) //I send data back to the client
ich den Rest der for-Schleife nicht tun können, Beim Callback muss ich auf ein Ergebnis warten, das von einer Funktion getData zurückgegeben wird und zur nächsten Iteration übergeht. Wie geht das?
PS Ich weiß, ich könnte Callback-Funktion verwenden, aber was ist, wenn nach dem letzten Iterationsprogramm die Antwort (letzte Zeile oben) vor der letzten Ausführung von getData senden wird?
Grüße
Wofür steht "reduce"? –
Obwohl dies funktioniert, besteht ein Nachteil von 'reduce()' darin, dass sie in der Reihenfolge ausgeführt werden, die nicht notwendig ist. –
@DanielB Ich weiß, aber er sagte ausdrücklich, dass er warten möchte: > Ich muss auf ein Ergebnis warten, die von einer Funktion getData zurückgegeben werden und in die nächste Iteration –