JavaScript ajax 调用 for 循环并维护响应顺序

JavaScript ajax call with for loop and maintain the order of response also

本文关键字:维护 响应 顺序 循环 ajax 调用 for JavaScript      更新时间:2023-09-26
for (var i = 0; i < 5; i++) {
    (function(val) {
        $.get('http://x.com/androidapi/clou.php?value=' + val, function(data) {
            console.log(data)
        })
    })(i)
}

如果传递的值为 2,我将我的 API 响应设置为延迟 10 秒,因此 2 的响应来得很晚。是否有任何方法可以在不实际同步 ajax 调用的情况下同步调用?API 只是回显值,我得到的响应是随机的,最后为 2。我的愿望目标是实现0 1 2 3 4输出。

你可以

用$.when((和$来做到这一点。延迟((:

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/