2016-07-15 15 views
0

Ich habe ein Problem, wo ich nicht in der Lage bin, eine globale Variable aus einer Callback-Funktion zu aktualisieren.Wie aktualisiere ich globale Variablen innerhalb einer asynchronen Callback-Funktion?

Hier ist mein Code:

// Set global variable. 
var load_values_from_server = "initial value"; 

// Call our page that shows server load and put it into "results" variable. 
microAjax("http://domain.com/show-server-load.php?" + randomnumber, 
function (results) { 
    load_values_from_server = results; 
}); 

// We want this to show the "results" from the callback function. 
alert(load_values_from_server); 

Das Problem ist, dass der Alarm immer „Anfangswert“ zeigt und nie die „Ergebnisse“ von der Callback-Funktion.

Was fehlt mir? Sollten globale Variablen nicht global sein, auch nicht innerhalb einer Callback-Funktion?

Antwort

1

Ihr Code aktualisiert die globale Variable. Die Funktion, die den Wert festlegt, wird nach der Alert-Anweisung in Ihrem Code aufgerufen. Der JavaScript-Code wartet nicht auf das Ergebnis der Ausführung des microAjax-Aufrufs. Um zu überprüfen, ob die microAjax Methode erfolgreich die Warnmethode nach der Zuweisung setzt Rückkehr:

var load_values_from_server = "initial value"; 

microAjax("http://domain.com/show-server-load.php?" + randomnumber, 
    function (results) { 
    load_values_from_server = results;    
    alert(load_values_from_server); 
    }); 

microAjax hat man nicht viele Konfigurationsmöglichkeiten geben. Schauen Sie sich this SO Frage und Antworten zu einer synchronen Anfrage mit jQuery.