2015-12-16 35 views
2
for (var i = 0; i < 5; i++) { 
    (function(val) { 
     $.get('http://x.com/androidapi/clou.php?value=' + val, function(data) { 
      console.log(data) 
     }) 
    })(i) 
} 

我有我的API响应设置为10秒延时如果传递的值是2,所以2响应来得晚。有没有实际使ajax调用同步的任何方式来同步调用? API只是回应价值,我得到的回应是随机的,最后是2。我的愿望目标是实现输出为0 1 2 3 4用JavaScript调用Ajax for循环,保持响应的命令也

+0

要么是一个请求然后又一次,另一种,而不是所有在同一时间或可考虑jQuery的$。当 – juvian

+0

在前一个回调函数中发送下一个AJAX请求。 – Barmar

回答

1

您可以$.when()$.Deferred()做到这一点:

var deferreds = []; 

for (var i = 0; i < 5; i++) { 
    (function(val) { 
    var dfd = $.Deferred(); 
    $.get('http://x.com/androidapi/clou.php?value=' + val, function(data) { 
     dfd.resolve(data); 
    })); 
    deferreds.push(dfd); 
    })(i) 
} 

$.when.apply(null, deferreds).done(function(){ console.log.apply(console, arguments)}); 

小提琴:https://jsfiddle.net/caeth/kqp294Lc/

+0

感谢作品,但有没有其他方式,我们不必使用额外的空间(数组)? –