javascript - 如何等到多个ajax请求完成?

标签 javascript jquery ajax

我有一些异步ajax请求

$.ajax({
    url: 'first.php',
    async: true,
    success: function (data) {
        //do stuff
    }
});

$.ajax({
    url: 'second.php',
    async: true,
    success: function (data) {
        //do stuff
    }
});

...

$.ajax({
    url: 'nth.php',
    async: true,
    success: function (data) {
        //do stuff
    }
});

我想在每个请求完成时运行 console.log()

我通常这样写代码:

$.ajax({
    url: 'first.php',
    async: true,
    success: function (data) {
        $.ajax({
            url: 'second.php',
            async: true,
            success: function (data) {
                //till the last ajax
            }
        });
    }
});

但是有人建议 Promise.all([])

如果我必须运行,比方说,4 个 ajax 请求,哪种方法最好/最快?

最佳答案

使用 Promise.all()

var promises = [];

promises.push(new Promise(done=>{
  $.ajax({
      url: 'first.php',
      async: true,
      success: done
  });
}));

promises.push(new Promise(done=>{
  $.ajax({
      url: 'second.php',
      async: true,
      success: done
  });
}));

promises.push(new Promise(done=>{
  $.ajax({
      url: 'nth.php',
      async: true,
      success: done
  });
}));

Promise.all(promises).then(()=>{
  console.log("All ajax completed.");
});

关于javascript - 如何等到多个ajax请求完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63689302/

相关文章:

javascript - Nuxt js静态页面相对URL

javascript - Audio.play() 在 Electron webview 中被 NotSupportedError 拒绝

javascript - ajax 请求中没有 'Access-Control-Allow-Origin',但不是通过单击 <a> 标记链接

javascript - 根据服务器响应的变化进行ajax调用?

javascript - 想要扩展原型(prototype)方法

javascript - 防止 VueJS 中的滚动

javascript - jquery-1.10.2.js :1472 Uncaught Error: Syntax error, 无法识别的表达式 : label[for ='team[]' ], 标签[for ='team[]'] *, #team[]-error

javascript - 如何手动触发提交功能?

javascript - 使用 Javascript 按下 Tab 键时出现问题

javascript - 用于插入、更新和删除数据库项目的 AJAX 代码