执行一组ajax请求一个接一个

时间:2016-03-19 16:04:45

标签: ajax

我有3个阵列,每个10个网址。

我想要的是:

首先执行第一个数组中url的所有ajax请求。

然后执行第二个数组网址的ajax请求

并且在最后一个第三个数组请求ursl被执行。

1 个答案:

答案 0 :(得分:0)

您可以使用promises(ES6)对请求进行排队,并在清除队列后继续。

var array1 = ['url1', 'url2', 'url3'];
var array2 = ['url1', 'url2', 'url3', 'url4'];
var array3 = ['url1', 'url2'];

function createPromiseArray(list){
   return new Promise(function(resolve, reject){
      var queue = [];
      for(var i=0; list.length > i; i++){
          queue.push(doRequest(list[i]));
      }
      Promise.all(queue).then(function(){
          resolve();
      });
    }
}

function doRequest(url){
    return new Promise(function(resolve, reject){
        // do ajax request
        if (!error) {
            resolve(data);
        }else{
            reject(data);
        }
    }
}

createPromiseArray(array1)
   .then(function(){
       createPromiseArray(array2);
   })
   .then(function(){
       createPromiseArray(array3);
   })
   .then(function(){
       console.log('all done');
   })

有关承诺的更多信息可以在https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

找到

您可能还需要为旧浏览器使用填充功能,您可以在此处找到https://www.promisejs.org/