我已经使用jQuery.ajax将应用程序内置到带有进度条的文件上传。
但是我担心我不了解垃圾收集将如何处理它,因此它将如何记忆效率。 对于进度条,我必须添加一个自定义xhr,以便添加"进度"事件。
该自定义xhr何时起作用并且'进展'清理事件处理程序?
myApp.prototype.uploadFile = function () {
$.ajax({
type : "POST",
url : posturl,
xhr : function () { // custom xhr
var myXhr = $.ajaxSettings.xhr();
this.onSaveProgress(myXhr, file);
return myXhr;
}.bind(this),
contentType: false,
processData: false,
data : postdata,
beforeSend : this.onBeforeSend,
success : this.onSaveSuccess,
error : this.onSaveError
});
},
myApp.prototype.onSaveProgress = function (xhr, file) {
if (!xhr.upload)
return;
xhr.upload.addEventListener("progress", function (e) {
if (e.lengthComputable) {
var percent = Math.floor((e.loaded / e.total)*100) + "%";
$("#progress" + file.id).css("width", percent).text(percent);
}
}, false); // add new progress event handler
}
如您所见,我需要访问'进展中的文件对象。事件处理程序,以便我可以更新正确的进度条。