Javascript Safari:在6个并发XMLHttpRequest请求之后,将不会调用进度块
我正在构建一个多文件上传jQuery脚本,并使用XMLHttpRequest和FormData上传文件。效果很好 但是,从测试和我读到的内容来看,您只能同时有6个并发XMLHttpRequest请求。从我的测试来看,这是正确的,但在这6项中的任何一项完成后,队列中的下一项将上载,这是人们所期望的 这个问题与进度函数有关。在使用Safari时,仅对前6个文件调用此函数,但排队的下一个文件不调用progress方法。Firefox和Chrome执行正确,并显示所有文件的进度。以下是我正在使用的:Javascript Safari:在6个并发XMLHttpRequest请求之后,将不会调用进度块,javascript,jquery,ajax,safari,xmlhttprequest,Javascript,Jquery,Ajax,Safari,Xmlhttprequest,我正在构建一个多文件上传jQuery脚本,并使用XMLHttpRequest和FormData上传文件。效果很好 但是,从测试和我读到的内容来看,您只能同时有6个并发XMLHttpRequest请求。从我的测试来看,这是正确的,但在这6项中的任何一项完成后,队列中的下一项将上载,这是人们所期望的 这个问题与进度函数有关。在使用Safari时,仅对前6个文件调用此函数,但排队的下一个文件不调用progress方法。Firefox和Chrome执行正确,并显示所有文件的进度。以下是我正在使用的: _
_makeRequest: function(asset) {
var _this = this;
var xhr = new XMLHttpRequest();
(function(progress) {
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
_this._progress(asset, e);
} else {
_this._log('Error: 'asset.file.name+' not computable');
}
};
}(asset.progress));
xhr.upload.addEventListener('load', function(e) {
_this._complete(e, _this);
});
xhr.upload.addEventListener('error', function(e) {
_this._failed(e, _this);
});
xhr.upload.addEventListener("abort", function(e) {
_this._canceled(e, _this);
});
xhr.upload.addEventListener("loadstart", function(e) {
_this._start(e, _this);
});
xhr.open("POST", this.assetBuilder.url);
xhr.send(this._formData(asset));
}
有没有办法让排队的文件也调用Safari中的进度函数,以便我可以更新我的UI进度栏?在什么浏览器中会发生这种情况?你说排队是什么意思?您是手动排队上传文件,还是希望浏览器排队连接?@Bergi-这似乎只发生在Safari中。在这种情况下,我称之为浏览器错误:-