2016-07-15 129 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执行同步请求。