首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环进行JavaScript ajax调用,并维护响应顺序

使用for循环进行JavaScript ajax调用,并维护响应顺序
EN

Stack Overflow用户
提问于 2015-12-16 20:30:43
回答 1查看 333关注 0票数 2
代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-16 21:08:58

您可以使用$.when()$.Deferred()来完成这一任务。

代码语言:javascript
复制
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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34321538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档