2017-03-29 3 views
-2

würde Ich mag die Breite eines externen Bildes einzustellen (von einer anderen URL) in eine Variable, so kann ich die neu zugewiesene Variable auf eine andere Funktion verwenden.Set Funktionsdaten in Variable Javascript

Das Problem ist, dass ich undefined Nachricht auf der Variable erhalten, den Code sehen.

var site_url = 'http://fabricjs.com/assets/1.svg'; 

function getMeta(url, callback) { 
    var img = new Image(); 
    img.src = url; 
    img.onload = function() { callback(this.width, this.height); } 
} 
var a = getMeta(site_url, function(width, height) { 
    return width; 
}); 

alert(a); //undefined 

Was mache ich falsch, wie soll ich vorgehen?

Antwort

0

Wenn mit asynchronen Funktionen arbeiten, müssen Sie den Rest des Codes in der Callback-Funktion setzen (oder Versprechen verwenden). Hier müssen Sie alert innerhalb Callback setzen.

var a = getMeta(site_url, function(width, height) { 
    alert(width); 
}); 
+0

Ich will es nicht warnen, ich möchte die Variable 'a' verwenden, die eine ganze Zahl mit der Breite Nummer sein sollte. – Lindow

+0

Ok, aber ich habe schon gesagt, dass du ** den Rest des Codes ** setzen musst, wo du 'a' in der Callback-Funktion verwendest. – user7771338

+0

Wenn ich 'a' drucke, ist es noch undefiniert, gibt es eine Möglichkeit, so dass diese Variable nur eine Zahl ist? Warum kann ich nicht Breite zurückgeben; ? Kannst du mir ein Beispiel zeigen? – Lindow