deferred.pipe()

Utility method to filter and/or chain Deferreds.

.deferred.pipe(doneFilter, failFilter)🡢 Promise

doneFilter FunctionAn optional function that is called when the Deferred is resolved.
failFilter FunctionAn optional function that is called when the Deferred is rejected.

.deferred.pipe(doneFilter, failFilter, progressFilter)🡢 Promise

doneFilter FunctionAn optional function that is called when the Deferred is resolved.
failFilter FunctionAn optional function that is called when the Deferred is rejected.
progressFilter FunctionAn optional function that is called when progress notifications are sent to the Deferred.

Deprecation Notice:As of jQuery 1.8, the deferred.pipe() method is deprecated. The deferred.then() method, which replaces it, should be used instead.

The deferred.pipe() method returns a new promise that filters the status and values of a deferred through a function. The doneFilter and failFilter functions filter the original deferred's resolved / rejected status and values. As of jQuery 1.7, the method also accepts a progressFilter function to filter any calls to the original deferred's notify or notifyWith methods. These filter functions can return a new value to be passed along to the piped promise's done() or fail() callbacks, or they can return another observable object (Deferred, Promise, etc) which will pass its resolved / rejected status and values to the piped promise's callbacks. If the filter function used is null, or not specified, the piped promise will be resolved or rejected with the same values as the original.

Filter resolve value:

HTML
var defer = $.Deferred(),
  filtered = defer.pipe(function (value) {
    return value * 2;
  });

defer.resolve(5);
filtered.done(function (value) {
  alert("Value is ( 2*5 = ) 10: " + value);
});
DEMO

Filter reject value:

HTML
var defer = $.Deferred(),
  filtered = defer.pipe(null, function (value) {
    return value * 3;
  });

defer.reject(6);
filtered.fail(function (value) {
  alert("Value is ( 3*6 = ) 18: " + value);
});
DEMO

Chain tasks:

HTML
var request = $.ajax(url, { dataType: "json" }),
  chained = request.pipe(function (data) {
    return $.ajax(url2, { data: { user: data.userId } });
  });

chained.done(function (data) {
  // data retrieved from url2 as provided by the first request
});
DEMO

Looking for a Web Developer?

👋

Hi! I'm Basti, author of this site. If you are looking for a web developer with 15+ years of experience, holla at me!

Be it the good 'ol jQuery, vanilla JS or modern frameworks like Vue and Svelte, front- or backend, I can help you.

Just write me at jobs@jqapi.com :)