javascript - 从循环中一次发送一个 AJAX 请求

标签 javascript wait synchronous

我知道这个问题已被问过无数次,但我终究无法弄清楚如何让这个答案适用于我的情况:wait for async javascript function to return

我在外循环中循环播放一些“电视 channel ”,然后在内循环中循环播放一周中的日期。在内部循环中,我向服务器发出 ajax 请求以获取数据,然后存储/缓存它以备后用,就像这样

var dates = []; //<-- Contains a list of dates for the coming week 
var baseUrl = "http://www.someserver.com";
var storedChannels = [1,2,3,4,5,6,7,8,9,10,45,23,56,34,23,67,23,567,234,67,345,465,67,34];

for(ch = 0; ch < storedChannels.length; ch++) {   
    var channel = storedChannels[ch];
    for(d=0; d < 7; d++) {
        var currentDate = dates[d];
        ajax({    
            url: baseUrl+"?ch="+channel+"&dt=currentDate"+,
            complete: function(res) {
                CMLocalStore.setString('ch' + ch + "_" + scheduleDay, res);
            },
        });
        //Want to wait here till the ajax request completes.
        //Do not want to continue to next iteration.
        //Do not want to fire of 50 bazillion ajax requests all at once
        //Why? Very limited bandwidth scenario, plenty of channels  
    }
}

PS:请不要使用 JQuery!仅纯 JS 解决方案

非常感谢!

最佳答案

你想要这样的东西。我还没有测试过,但希望你应该明白了。

var dates = []; //<-- Contains a list of dates for the coming week 
var baseUrl = "http://www.someserver.com";
var storedChannels = [1,2,3,4,5,6,7,8,9,10,45,23,56,34,23,67,23,567,234,67,345,465,67,34];

function ProcessNext(ch, d) {
    if (d < 7) {
        d++;
    } else {
        d=0;
        if (ch < storedChannels.length) {
            ch++;
        } else {
            return;
        }
    }

    var channel = storedChannels[ch];
    var currentDate = dates[d];
    ajax({    
        url: baseUrl+"?ch="+channel+"&dt=currentDate"+,
        complete: function(res) {
            CMLocalStore.setString('ch' + ch + "_" + scheduleDay, res);
            ProcessNext(ch, d);
            },
    });
}

ProcessNext(0, 0);

关于javascript - 从循环中一次发送一个 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066002/

相关文章:

javascript - 防止只有 <br> 的文本区域提交

Java,强制程序在while循环内等待点击

signals - 在 Bourne shell 中同时监视信号和进程退出

javascript - 同步 jQuery 调用,无需将所有内容放入回调中

javascript - JavaScript 中的计时器不起作用

javascript - 基本的 AngularJs 无法路由到不同的页面

javascript - 如何在 greasemonkey 中进行同步 AJAX 调用?

javascript - 将异步 jQuery Dialog 更改为同步?

javascript - d3 svg 未在初始组件渲染上渲染。 react

Jquery 在用户定义的函数之间等待