我有语言列表,[‘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] 举报,一经查实,本站将立刻删除。