jQuery -使用全局数组并等待$get加载检索到的数据

jQuery - using global array and wait for $get to load retrieved data?

本文关键字:加载 get 检索 数据 等待 全局 数组 jQuery      更新时间:2023-09-26

看了一整天的代码示例,还是不能让它工作。

基本上,我想使用来自四个本地文件的HTML加载数组。然后,我将使用该HTML动态填充div与某种动画滑块。

我的问题是,我似乎不能得到计时器等待html被检索并分配给变量。GET工作得很好,但是变量似乎没有被加载到GET循环之外。

我可以看到asynch GET正确地填充数组,但是元素在循环中仍然未定义。我认为它们是全局变量,所以不应该是这样。

我是jQuery的新手,一直在使用SO作为示例,所以欢迎任何建议-希望这只是一个有经验的javascript编码员的明显修复。

下面是我的代码:
window.standings = new Array(4);
window.iURL = 0;
standingsURL = ["MondayNight.html", "TuesdayNight.html", "WednesdayNight.html", "ThursdayNight.html"]
for (window.iURL  = 0; window.iURL  < window.standings.length; window.iURL ++) {
    $.get(standingsURL[window.iURL], function( data ) {
        window.standings[window.iURL] = data;
        alert (window.standings[window.iURL]);
      }, "text");
}
setTimeout(function repeatTimeout() {
    if(window.standings[window.standings.length] !== undefined){
        for (window.iURL  = 0; window.iURL  < window.standings.length; window.iURL ++) {
            alert (window.standings[window.iURL]);
        }
    } else {    
        alert ("Wait again");
        setTimeout(repeatTimeout, 2500);
    }
}, 1000);

我能看到的第一个问题是,在您的repeatTimeout函数中,您引用的数组中不存在的项目。

window.standings[window.standings.length]

等于window.standings[4]

你有一个包含四个元素的数组,你在这里引用了数组索引4——但是数组是零索引的,所以只有索引0、1、2和3是有效的。试一试:

window.standings[window.standings.length - 1]

编辑:

声明一个空数组:

window.standings = []

代替:window.standings[window.iURL] = data;,这样做:

window.standings.push(data)

你的if函数现在检查长度:

if(window.standings.length === 4)

这是一个相对粗糙的解决方案。查看这篇关于when函数的更多信息。