gpt4 book ai didi

javascript - 需要有关 Javascript 中变量范围的帮助

转载 作者:数据小太阳 更新时间:2023-10-29 04:43:12 26 4
gpt4 key购买 nike

我有以下 Javascript 函数,它应该返回数据库中的一组数组。它使用 $.getJSON() 方法调用 get_groups.php,它实际上是从数据库中读取数据。

function get_groups() {
var groups = [];

$.getJSON('get_groups.php', function(response) {
for (var i in response) {
groups.push(response[i]);
}
}

return groups;
}

不幸的是,这个函数没有按预期工作,因为 groups.push(response[i]);
不填充 var groups = [];(据我所知,它填充了其他一些 groups 数组,可能是全局数组)。

假设我不想有一个全局的 groups 变量,你会如何解决这个问题?

最佳答案

这真的不是范围问题,而是 $.getJSON() 的事实是异步的,这意味着这部分您返回之后运行:

for (var i in response) {
groups.push(response[i]);
}

您需要在异步请求的回调中调用任何需要此数据的函数,以便它在数据可用时运行,如下所示:

$.getJSON('get_groups.php', function(response) {
var groups = [];
for (var i in response) {
groups.push(response[i]);
}
doSomethingThatNeedsGroups(groups);
});

目前您的组数组正在被填充,只是不是在您需要的时候。如果你绝对必须返回这个(我强烈建议按照预期的方式使用异步模型)你可以使用完整的 $.ajax()版本并设置 async:false。再次强调...如果可能,不要走那条路,一旦数据可用,坚持调用任何需要数据的函数,因为 async: false 会锁定用户的浏览器。

关于javascript - 需要有关 Javascript 中变量范围的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com