当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。