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