微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 延迟jquery ajax请求的顺序

我有语言列表,[‘en’,’de’等等,我想为每种语言提供复杂的ajax请求.在第一个ajax请求我得到每个语言的意图数量.

var languages = ['en', 'de', 'es', 'fr', 'it', 'cn'];
intents_dic = [];
chart_quantity = ['quantity'];
for (var x = 0; x < languages.length; x++){
    $.ajax({
    url: 'url',
    type: 'GET',
    async: false,
    success: function(data){
        for (i in data){
            intents_dic.push(data[i]['id'])
        }
        var intents_count = 0;
        var deferreds = [];

在第二步,我需要计算前一次通话中每个意图的短语数量.我使用延迟列表来完成这项任务.

for (var id = 0; id < intents_dic.length; id++){
    deferreds.push($.ajax({
    url: 'url',
    type: 'GET',
    success: function(data){
        intents_count += data['templates'].length;
        }
    }))
}
$.when.apply(null, deferreds).done(function() {
    chart_quantity.push(intents_count);
})

但是当延迟的ajax请求完成时,完成的顺序因语言列表顺序而不同(它是构建图的主体).这个问题可以修复,还是ajax调用功能?谢谢.

解决方法:

这是你的分叉和工作jsfiddle(具有有序结果的异步调用).

for(var i = 0; i < 5; i++){
    setTimeout(function(x){
        done(x,results);
    }(i),1000);
}

http://jsfiddle.net/htuz3t3m/2/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐