jquery Deferred 解决异步回调问题

本文详细介绍了jQuery中Deferred对象及Promise模式的应用,包括如何创建和使用Deferred对象,以及通过$.when()方法处理多个异步操作。同时,还探讨了resolve、reject、always等方法的作用,并展示了如何利用pipe进行错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function ok(name){

   var dfd = new $.Deferred();


   callback:func(){

          return  dfd.resolve( response );

   }


   return dfd.promise();

}


$.when(ok(1),ok(2)).then(function(resp1,resp2){})

//相关API 分成3类

1类:$.when(pro1,pro1) 将多个 promise 对象以and的关系 合并为1个

2类:promise 激发为 解决 deferred.resolve([ args ] deferred.resolveWith( context, [ args ] ) 

和 拒绝 .reject  .rejectWith


context 上下文 替换 this 和通知 .notify  .notifyWith

3类: 对激发的响应  解决时deferred.done(args) 拒绝时 deferred.fail() 通知时 deferred.progress()

不管 解决 或 拒绝 deferred.always()


deferred.then( doneCallbacks, failCallbacks [, progressCallbacks] )



promise(或者叫deferred 延迟对象如何获取?)

var dfd = new $.Deferred(); return dfd.promise();


返回promise当前状态

deferred.state()  pending(尚未完成) resolved rejected


管道

deferred.pipe( [ doneFilter ], [ failFilter ] )

var defer = $.Deferred()

var filtered = defer.pipe( null, function( value ) {

      return value * 3;
});

defer.reject( 6 );
filtered.fail(function( value ) {
      alert( "Value is ( 3*6 = ) 18: " + value );
});





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值