deferred.pipe( [doneFilter,] [failFilter] )
deferred.pipe( [doneFilter,] [failFilter] )
deferred.pipe( [doneFilter] [, failFilter] [, progressFilter] )
Метод deferred.pipe() возвращает новый Обещанный объект, который фильтрует статус и значения Отложенного объекта через функцию. Функции doneFilter и failFilter фильтруют статус и значение оригинального Отсроченного решенного/откланенного объекта. Начиная с jQuery 1.7, метод также принимает функцию фильтрации вызовов progressFilter к первоначальным отложенным методам уведомления notify или notifyWith.Эти функции фильтра могут вернуть новое значение, которое передается вместе с функциями обратного вызова done() или fail(), или они могут вернуть другой наблюдаемый объект (Отсроченный, Обещанный, и т.д.), который передает решенный/откланенный статус и значение в функции обратного вызова. Если функция фильтра указана как null, или не указана, то объект будет решен или откланен с теми же значениями, что и оригинал.
Примеры
Пример 1
Фильтр решенного значения:
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 );
});
Пример 2
Фильтр откланенного значения:
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 );
});
Пример 3
Сеть задач:
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
});

