如何等待jQuery ajax请求在循环中完成?

 kiss爱倪 发布于 2023-02-13 18:42

我有那个代码:

for (var i = 0; i < $total_files; i++) {
  $.ajax({
    type: 'POST',
    url: 'uploading.php',
    context: $(this),
    dataType: 'json',
    cache: false,
    contentType: false,
    processData: false,
    data: data_string,
    success: function(datas) {
      //does something
    },
    error: function(e) {
      alert('error, try again');
    }
  });
}

它上传的图片非常好,但问题是我找不到逐个上传图片的方法,我试图将选项async设置为false但它冻结了网页浏览器,直到所有图片都上传不是我的想要,我想以某种方式模拟这个"async:false"选项来执行相同的操作但不冻结Web浏览器.

这该怎么做 ?

1 个回答
  • 您可以创建一个承诺数组,以便在解决所有承诺后,您可以运行您的all done代码.

    var promises = [];
    for (var i = 0; i < $total_files; i++){ 
       /* $.ajax returns a promise*/      
       var request = $.ajax({
            /* your ajax config*/
       })
    
       promises.push( request);
    }
    
    $.when.apply(null, promises).done(function(){
       alert('All done')
    })
    

    DEMO

    2023-02-13 18:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有