2016-03-19 10 views
0

Dies hat für eine Weile zu mir bekommen. So versuche ich, eine Funktion zu erstellen, die Anforderung verwendet und Körper der Anforderung zurückgibt, die das Anforderungsknotenmodul verwendet. Hier ist mein Code:Request Node Modul Variable Scope

req = require("request") 
foo = req("https://www.youtube.com", function(err, resp, body){ 
    bar = body 
}) 
console.log(bar) 

Diese leider gibt ReferenceError: bar is not defined Wer in der Lage zu helfen? Bitte testen Sie Ihre Antwort, bevor Sie es posten, denn ich habe versucht, fast ALLES Ich kann mir vorstellen.

+0

Sie jede Variable zu initialisieren haben sein ' var': 'var bar;' 'var foo = ... {bar = body}' 'console.log (bar);' – Slavik

+0

protokollieren 'bar' außerhalb der' req'-Funktion gibt nichts zurück, besonders wenn Bar nicht definiert wurde. Erhalten Sie das gleiche Ergebnis, wenn Sie log 'bar' nach' bar = body; '? – AVDW

+0

aber Sie haben einen asynchronen Aufruf, so dass 'console.log (bar)' trotzdem 'undefined' druckt – Slavik

Antwort

0

Try this:

var request = require("request") 
request("https://www.youtube.com", function(err, resp, body){ 
    bar = body; 
    console.log(bar); 
}); 
+0

Ich versuche, eine Funktion zu erstellen, die die Werteleiste zurückgibt. Dafür würde das nicht funktionieren, weil Sie keinen Rückgabewert für die enthaltene Funktion in einer Funktion – TigerGold

+0

angeben können, die ich bekam. KEINE weiteren Antworten erforderlich. – TigerGold

+0

toll, wenn Sie Ahnung haben, wie async funktioniert und wie Sie es funktionieren konnte, markieren Sie bitte asnwer korrekt –

0

ofcourse es gut ReferenceError: bar is not defined zurück, weil bar es nur definieren inide die req und auch Ihre console.log sollte innerhalb des req

req = require("request") 
foo = req("https://www.youtube.com", function(err, resp, body){ 
    var bar = body; 
    console.log(bar); 
}) 
+0

Ich weiß, warum, ich weiß einfach nicht, wie es geht. Der obige Code befindet sich außerdem in einer Funktion, die die Werteleiste zurückgibt. – TigerGold