2015-12-16 65 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

感謝作品,但有沒有其他方式,我們不必使用額外的空間(數組)? –