SyntaxStudy
Sign Up
jQuery Advanced 5 min read

Racing Deferreds

Racing Deferreds

There is no native $.race() in jQuery, but you can implement it by resolving a shared Deferred from whichever operation finishes first.

Example
function race(deferreds) {
  const dfd = $.Deferred();
  deferreds.forEach(function(d) {
    d.done(function() { dfd.resolve.apply(dfd, arguments); })
     .fail(function() { dfd.reject.apply(dfd, arguments); });
  });
  return dfd.promise();
}

race([
  $.getJSON("/api/primary"),
  $.getJSON("/api/backup")
]).done(data => renderData(data));
Pro Tip

Race is useful for fallback strategies — use the fastest of two endpoints.