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

 

 

原文地址:https://www.cnblogs.com/benstos/p/6405825.html