xhr.upload.onProgress多久开火一次?

时间:2011-07-21 13:41:57

标签: jquery html5 xmlhttprequest

我在通过XHR上传文件时订阅了onProgress事件。我的进度条是动画的(通过jQuery),以提供更好的视觉美感。

onProgress似乎很快就会发射,所以我想知道它实际上被解雇的频率,以便我能够以某种方式设计一个过程,我可以限制对此的响应,以便我可以有一个连续的动画进度条

3 个答案:

答案 0 :(得分:7)

虽然扩展jQuery可能是有益的;对于这个简单的扩展jQuery不值得花费的东西。限制函数调用的有效解决方案可写为:

xhr.upload.onprogress = function(event) {
  // limit calls to this function
  if (!this.NextSecond) this.NextSecond = 0;
  if (Date.getTime() < this.NextSecond) return;
  this.NextSecond = Date.getTime() + 1000;

  // this code gets executed at least one second apart from the last time
}

答案 1 :(得分:4)

请查看jQuery throttle/debounce plugin以限制对onprogress回调的来电。

限制演示:http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/

您的代码看起来像这样:

xhr.upload.onprogress = $.throttle(100, function (event)
{
    // update the progress bar
});

答案 2 :(得分:2)

_.throttle(function, wait)

UnderscoreJS具有限制功能的实用程序。

触发的实际金额onProgress是浏览器特定的,因此最好在基于时间的解决方案上限制实际回调。