使用自定义Progress事件和Ajax GC进行jQuery文件上载

时间:2015-02-25 19:24:23

标签: javascript jquery ajax garbage-collection

我已经使用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

}

如您所见,我需要访问'进展中的文件对象。事件处理程序,以便我可以更新正确的进度条。

0 个答案:

没有答案