Ich möchte eine sehr einfache Aufgabe erledigen, doch ich stecke fest!Ich kann HTTP GET nicht innerhalb eines anderen verschachteln mit node.js
Das Szenario ist wie folgt aus:
Nach einer GET-Anfrage an meine api, ich möchte http.get aus einer externen Website, und dann die Antwort von dieser externen Website auf die ursprüngliche api Anfrage senden zurück.
Offensichtlich sind die Aufrufe asynchron, so dass die Zeichenfolge LoremParagraph nicht korrekt geladen wird, bevor sie zurück an die API gesendet wird.
Auch ich bekomme den Fehler: Fehler: Kann Header nicht nach dem Senden festgelegt werden.
Hier ist mein Code:
module.exports = function(app, express) {
var myLoremRouter = express.Router();
var loremParagraph = '';
//HTTP GET accessed at localhost:8081/mylorem
myLoremRouter.get('/', function(req, res) {
// Fetch one paragpraphlorem ipsum text from http://www.faux-texte.com/text-random-1.htm
http.get("http://www.faux-texte.com/text-random-1.html", function(resp) {
resp.on('data', function(chunk) {
// console.log('BODY: ' + chunk);
var $ = cheerio.load(chunk);
loremParagraph = $('div.Texte').text();
console.log(loremParagraph);
// console.log(resp.status);
});
})
// If any error has occured, log error to console
.on('error', function(e) {
console.log("Got error: " + e.message);
});
//Finally send the result back to the api call
res.json({ message: loremParagraph });
});
return myLoremRouter;
};
Du nennst 'res.json' zweimal. Das ist es, was dir den Fehler gibt. Sie können eine Antwort nicht ändern, nachdem sie gesendet wurde. – Aron
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –