Jquery 延迟对象
延迟对象,在jQuery的1.5引入,是通过调用jQuery.Deferred()
方法创建一个可链式调用的工具对象。 它可以注册多个回调到回调队列, 调用回调队列,准备代替任何同步或异步函数的成功或失败状态。
deferred.alway()
当Deferred(延迟)对象解决或拒绝时,调用添加处理程序。
deferred.always( alwaysCallbacks [, alwaysCallbacks ] )
参数 alwaysCallbacks 类型 : 一个函数或函数数组
例子:
1 $.get("test.html").always( function() { 2 console.log("$.get completed with success or error callback arguments"); 3 } ); 4 Object {readyState: 1} 5 6 7 8 .get completed with success or error callback arguments
deferred.done()
当延迟对象结决时,添加处理程序 ,参数与deferred.alway() 相同
例子:
1 function b(){ 2 console.log("test"); 3 } 4 5 6 var dtd=$.Deferred(); // 创建延迟对象 7 dtd.resolve(); //改变延迟对象,延迟对象解决 8 dtd.done(b).done(function(){ 9 console.log("b is done"); 10 }); 11 12 test 13 14 b is done
deferred.fail()
当延迟对象拒绝时被调用
1 var dtd = $.Deferred(); 2 dtd.reject(); 3 dtd.fail(function(){console.log("fail")}); 4 5 fail
deferred.resolve()
将延迟对象置为解决,并可执行回调函数;
deferred.reject()
拒绝延迟对象,并执行回调函数;
deferred.state()
确定一个延迟对象的当前状态。这个方法不接受参数,只返回一个字符串,为以下三个:
resolved:表示延迟对象在解决状态;
rejected : 表示延迟对象为拒绝状态;
pending : 表示延迟对象尚未解决状态;
deferrred.then()
当Deferred(延迟)对象解决,拒绝或仍在进行中时,调用添加处理程序。
例子:
1 function a1() { 2 var dtd = $.Deferred(); 3 console.log("aa"); 4 dtd.resolve(); 5 6 return dtd; 7 } 8 9 var an= a1(); 10 11 an.then(function() { 12 console.log("an"); 13 }) 14 15 aa 16 17 an