多个ajax同时请求

时间:2016-10-21 18:03:59

标签: javascript ajax parallel-processing blob

我想用ajax读取一堆图像。 如果我知道每个图像的网址,我怎样才能同时制作3个图像ajax请求,然后获取接下来的3个直到我拥有它们?

这是我对一个图像的ajax函数

  var image_url = images[i];
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
      console.log(xhr.response, typeof xhr.response);

    }
  }

  xhr.open('GET', image_url);
  xhr.responseType = 'blob';
  xhr.send();

2 个答案:

答案 0 :(得分:2)

如果将async设置为true,则可以同时触发多个。浏览器将限制一次有多少,具体取决于使用的是哪一个。

$.ajax({
    type: "GET",
    async: false,
    url: "foo2.php"
    });
带有ajax的

async与您的想法相反。

答案 1 :(得分:0)

您应该将每个图像的URL放在一个数组中。 如果你对jQuery没有任何疑虑,你应该使用$ .get,因为在这种情况下它将有助于大量处理。然后在递归函数中调用它。这是伪代码,我还没有对其进行测试。

var imageUrls = [];//populate with your URLs
getImage(0);
getImage(1);
getImage(2);


var getImage = function(iteration){
  $.get(imageUrls[iteration], function(data){
     //handle the image
     //call the function again with the next index
     getImage(iteration+3);
  });

}