【发布时间】:2015-12-21 23:14:57
【问题描述】:
我正在尝试发出“许多”xhr 请求,但似乎每次它都会在发出另一个请求之前等待答案。这就像 XHR 建立一个队列并始终等待上一个请求完成。
我该怎么做才能同时运行更多 xhr 请求?
$('body').delegate('.download','click', function(evt){
evt.preventDefault(); // Not related
var xhr = new XMLHttpRequest();
xhr.open('GET', "proxy.php?" + this.href, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (this.status == 200) {
var blob = new Blob([this.response], {type:'audio/mp4'});
console.log(blob.size);
if(blob.size > 0){
$("<a>").attr({
download: name,
href: URL.createObjectURL(blob),
target: "_blank"
})[0].click();
}
}
};
xhr.send();
});
【问题讨论】:
-
你试过使用 web worker 吗?
-
是的,同样的事情发生了..两个工人被一起调用,但第二个 XHR 等待第一个 XHR 完成
-
如何打开新的浏览器窗口,进行请求,使用 post 消息发送响应,然后关闭窗口?只是可能有帮助的想法.. 不是很熟悉这个主题。
-
另外考虑一下,使用更多变量或数组或对象来存储 xhr.. 在服务器响应之前,该变量可能仍在使用中。
-
你用 jquery deferred 试过了吗?只是一个想法。
标签: javascript asynchronous xmlhttprequest