如何从异步回调函数中更新全局变量?

时间:2016-07-15 07:29:05

标签: javascript asynchronous global-variables

我遇到一个问题,我无法从回调函数内部更新全局变量。

这是我的代码:

// 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 个答案:

答案 0 :(得分:1)

您的代码正在更新全局变量。设置值的函数在代码中的alert语句之后调用。 JavaScript代码不等待执行microAjax调用的结果。要检查microAjax方法是否成功返回,请在赋值后添加alert方法:

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执行同步请求的问题和答案。