2016-07-15 130 views
0

我有一個問題,我無法從回調函數中更新全局變量。如何更新異步回調函數中的全局變量?

這裏是我的代碼:

// 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); 

的問題是,警報始終顯示在回調函數「初始值」,也不會「成績」。

我錯過了什麼?全局變量不應該是全局變量,即使在回調函數中也是如此?

回答

1

您的代碼正在更新全局變量。設置該值的函數在代碼中的alert語句之後調用。 JavaScript代碼不會等待執行microAjax調用的結果。要檢查是否microAjax方法返回成功投放警報方法分配後:

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不會給你太多的配置的可能性。看看this問題和答案使用jQuery執行同步請求。