Обработка выполнения deferred.pipe()
deferred.pipe() – с помощью этого метода можно проводить предварительную обработку параметров, которые будут передаваться в обработчики смены состояния объекта deffered.
Возможны два варианта использования функции
deferred.pipe( [doneFilter ] [, failFilter ] )
- doneFilter – функция, которая запустится, когда объект Deferred перейдёт в состояние неудачного выполнения (resolved);
- failFilter – функция, которая запустится, когда объект Deferred перейдёт в состояние удачного выполнения (rejected);
deferred.pipe( [doneFilter ] [, failFilter ] [, progressFilter ] )
- doneFilter – функция или массив функций обработчиков перехода объекта Deferred в состояние неудачного выполнения (resolved);
- failFilter – функция или массив функций обработчиков перехода объекта Deferred в состояние удачного выполнения (rejected);
- progressFilter – функция, которая запустится, как только объекту Deferred будет выставлено одно из состояний.
Пример 1
Во второй обработчик первым и единственным параметром попадает значение, которое вернёт первый обработчик. Deferred переходит в состояние неудачного выполнения.
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
Суть примера аналогична первому, но Deferred переходит в состояние удачного выполнения.
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 ); });