當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JQuery deferred.pipe()用法及代碼示例


用法
deferred.pipe(  [doneFilter ] [, failFilter ] ) => Promise

不推薦使用的版本:1.8

說明:過濾和/或鏈接延遲的實用方法。

  • 添加的版本:1.6deferred.pipe( [doneFilter ] [, failFilter ] )

    • doneFilter
      類型:Function ()
      解析 Deferred 時調用的可選函數。
    • failFilter
      類型:Function ()
      當 Deferred 被拒絕時調用的可選函數。
  • 添加的版本:1.7deferred.pipe( [doneFilter ] [, failFilter ] [, progressFilter ] )

    • doneFilter
      類型:Function ()
      解析 Deferred 時調用的可選函數。
    • failFilter
      類型:Function ()
      當 Deferred 被拒絕時調用的可選函數。
    • progressFilter
      類型:Function ()
      當進度通知發送到 Deferred 時調用的可選函數。

棄用通知:從 jQuery 1.8 開始,不推薦使用 deferred.pipe() 方法。這deferred.then()應該使用替換它的方法。

deferred.pipe()方法返回一個新的 Promise,它通過一個函數過濾一個 deferred 的狀態和值。這doneFilterfailFilter函數過濾原始延遲的已解決/已拒絕狀態和值。從 jQuery 1.7 開始,該方法還接受一個progressFilter過濾對原始延遲的任何調用的函數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
});

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 deferred.pipe()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。