Racing Deferreds
There is no native $.race() in jQuery, but you can implement it by resolving a shared Deferred from whichever operation finishes first.
There is no native $.race() in jQuery, but you can implement it by resolving a shared Deferred from whichever operation finishes first.
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));
Race is useful for fallback strategies — use the fastest of two endpoints.