SyntaxStudy
Sign Up
jQuery Advanced 5 min read

Progress Notifications

Progress Notifications

Deferred objects support a third state: progress. Use .notify() on the Deferred and .progress() to listen for updates.

Example
function upload(files) {
  const dfd = $.Deferred();
  let done = 0;

  files.forEach(function(file) {
    uploadFile(file).done(function() {
      done++;
      dfd.notify(Math.round(done / files.length * 100));
      if (done === files.length) dfd.resolve();
    });
  });
  return dfd.promise();
}

upload(myFiles)
  .progress(pct => $("#bar").css("width", pct + "%"))
  .done(() => alert("All files uploaded!"));
Pro Tip

Native Promises do not have a progress state — use Deferred when you need progress callbacks.