Aufruf mehrere HTTP-requests in einer einzigen HTTP-Anforderung in Node.js

Ich versuche zu rufen mehrere URL in einer einzelnen URL-Aufruf und schieben Sie die json-Antwort in ein array und senden Sie das array in Reaktion auf den Anwender.

Mein code wie folgt Aussehen:

var express = require('express');

var main_router = express.Router();

var http = require('http');

urls = [
"http://localhost:3010/alm/build_tool",
"http://localhost:3010/alm/development_tool",
"http://localhost:3010/alm/project_architecture"];

var responses = [];

main_router.route('/')

.get(function (req, res) {

var completed_requests = 0;

for (url in urls) {

  http.get(url, function(res) {

    responses.push(res.body);

    completed_request++;

    if (completed_request == urls.length) {

        //All download done, process responses array
    }
  });
}
res.send(responses);
});

Habe ich auch versucht, diese mit npm Anfrage-Modul.
Wenn ich diesen code ausführen es nur NULL zurückgeben, oder einige zufällige Ausgabe, die nur den Header.

Mein Ziel ist zu nennen, mehrere URL ' s in einem einzelnen Knoten get-Anforderung aus, und fügen Sie die JSON-Ausgabe auf ein array und senden Sie an die Endbenutzer.

Dank

Yo haben, um Rückrufe oder kann ich vorschlagen, das Async-Modul github.com/caolan/async
Siehe Antwort. Sie sollte eigentlich warten Sie auf das Ende der Reaktion durch die Verwendung res.on('end', function...

InformationsquelleAutor Vaibhav Jain | 2015-12-23

Schreibe einen Kommentar