Safari:在6个并发的XMLHttpRequest请求之后,进程块不会被调用

时间:2014-12-02 00:37:57

标签: javascript jquery ajax safari xmlhttprequest

我正在构建一个多文件上传jQuery脚本,并使用XMLHttpRequestFormData上传文件。效果很好。

但是,从测试和我读过的内容来看,您只能同时拥有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中调用progress函数,以便我可以更新我的UI进度条?

0 个答案:

没有答案