Javascript - 暂停循环直到AJAX完成

时间:2018-05-25 10:42:45

标签: javascript ajax

我有一个触发AJAX请求的循环,是否可以暂停循环,直到AJAX每次迭代都返回?

 for (var i = 0; i < 5; i++) {

     var data = "i=" + 1;
     var ajax = $.ajax({
         url: '/ajax.php',
         type: 'post',
         data: data,
         success: function(result)
         {
           //alert(result);
         }                                                      
     });

     //pause the for loop here

     ajax1.done(function (result) {
         //continue the for loop
     }); 
 }

2 个答案:

答案 0 :(得分:1)

您希望Ajax调用是异步的,但也要连续执行。您可以使用递归代替for循环。

doAjax (index, maxNumber) {

     var data = "i=" + index;
     var ajax = $.ajax({
         url: '/ajax.php',
         type: 'post',
         data: data,
         success: function(result)
         {
           //alert(result);
         }                                                      
     });
     ajax1.done(function (result) {
         if(index<=maxNumber){
               doAjax(index + 1, maxNumber);
     });
}

您可以将其称为 doAjax(1, 5) ,这将使之前的一个ajax调用从1到5完成。

答案 1 :(得分:0)

在ES6中,您可以使用np.float64 == np.dtype(float).type / async语法:

await

(这需要在for (let i = 0; i < 5; i++) { let data = "i=" + i; let result = await $.ajax({ url: '/ajax.php', type: 'post', data: data }); console.log(result); }函数中完成。)

除此之外,JS中没有允许这样做的语法,因此您必须调整代码:

async