我遇到一个问题,无法从回调函数内部更新全局变量。
这是我的代码:
// 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);
问题是警报始终显示“初始值”,而从不显示回调函数的“结果”。
我错过了什么?即使在回调函数中,全局变量不应该是全局的吗?
最佳答案
您的代码正在更新全局变量。设置该值的函数在代码中的警报语句之后调用。 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 执行同步请求的问题和解答。
关于javascript - 如何从异步回调函数中更新全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390295/