Ich habe einen einfachen NodeJS-Server, der Daten von einem anderen Server abruft und sie in einer JSON-Datei speichert, ich muss einen Status über jede abgerufene und generierte Datei schreiben, aber das funktioniert nicht, weil ich Response.End() auszuführen haben, die, dass ich wieder in den Stream kann nicht schreiben impliziert, ohne hier den Strom endetNodeJS schreiben Antwort auf Browser mehrmals
mein Code:
var http = require('http');
var module = require('fs');
var APIs = [ '/servlet/en', '/servlet/fr' ];
var langs =[ 'en', 'fr' ];
var finish = false;
var host = 'http://www.localtest';
const port = process.argv[2] || 9000;
var responses = [];
http.createServer(function (req, response) {
for (x in APIs){
console.log(x);
var options = {
host: 'localtest',
port: 8888,
path: APIs[x],
lang: langs[x]
};
http.get(options, function(res) {
res.setEncoding('utf8');
var body='';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(chunk){
responses.push(body);
if (responses.length == 2){
var d = JSON.parse(responses[1]);
var d2 = JSON.parse(responses[0]);
module.writeFileSync("options.lang1"+".json",JSON.stringify(d) , 'utf-8');
module.writeFileSync("options.lang2"+".json",JSON.stringify(d2) , 'utf-8');
}
});
});
}
}).listen(parseInt(port));
console.log(`Server listening on port ${port}`);
Ein Beispiel, habe ich versucht zu schreiben eine Nachricht an den Benutzer nach der Zeile: answers.push (body); mit response.write(), aber diese Methode benötigt eine response.end(), um ausgeführt und im Browser angezeigt werden, Wenn ich das tun kann ich nicht mehr in den Stream schreiben!
Mögliche Duplikat [Rückruf, nachdem alle asynchronen forEach Rückrufe abgeschlossen werden] (http://stackoverflow.com/questions/18983138/callback-after-all-asynchronous-foreach-callbacks-are-completed) –
Es Beantwortet meine Frage nicht !!!! – M1M6
Vielleicht habe ich die Frage falsch interpretiert. Kümmere dich darum, es zu klären? Warum denkst du, dass "response.end()" zu einem Problem werden kann? –