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
时间: 2024-10-24 02:10:10

Jquery 延迟对象的相关文章

jquery源码解析:jQuery延迟对象Deferred(工具方法)详解2

请接着上一课继续看. $.Deferred()方法中,有两个对象,一个是deferred对象,一个是promise对象. promise对象有以下几个方法:state,always,then,promise,pipe,done,fail,progress. deferred对象除了有promise对象的所有方法外(通过jQuery.extend( obj, promise ),把promise对象的所有方法复制到deferred对象中),还有其他三个:resolve,reject,notify.

jquery源码解析:jQuery延迟对象Deferred(工具方法)详解1

请先看上一课的回调对象.Deferred是通过extend添加到jQuery中的工具方法.如下所示: jQuery.extend({ Deferred: function( func ) { }, when: function( subordinate /* , ..., subordinateN */ ) { }}); 首先,来介绍下Deferred的使用: var cb = $.Deferred(); setTimeout(function(){ alert(1); cb.resolve()

jQuery 延迟对象源码

Deferred延迟对象 jQuery.extend({ Deferred : function () { ; } when : function () { ; } }); 扩展了2个工具方法.延迟对象,是基于回调函数开发的.$.Deferred(); -> $.Callbacks();$.when(); 复习一下Callbacks: 例子(1) var cb = $.Callbacks(); setTimeout(function () { alert(111); cb.fire(); },

JQUERY延迟对象

API:   http://www.css88.com/jqapi-1.9/category/deferred-object/ 异步编程的处理 JavaScript的执行流程是分为"同步"与"异步" 传统的异步操作会在操作完成之后,使用回调函数传回结果,而回调函数中则包含了后续的工作.这也是造成异步编程困难的主要原因: 我们一直习惯于“线性”地编写代码逻辑,但是大量异步操作所带来的回调函数,会把我们的算法分解地支离破碎. 嵌套式回调 动画为例,下一个动画要等上一个执

jQuery 源码: 延迟对象补充。

// Deferred helper (3132)when 是延迟对象 Deferred的一个辅助方法. var dfd = $.Deferred(); //创建延迟对象 dfd.done(); dfd.fail(); //使用: $.when().done(); $.when().fail();   when的返回值,是一个延迟对象. 源码: return deferred.promise(); 举个例子:when可以等待多个延迟对象都成功后,触发成功.例子:(1) 成功必须多个都成功. fu

jQuery源码 02--(3043 , 3183) Deferred : 延迟对象 : 对异步的统一管理

//延迟对象 jQuery.extend({ Deferred: function( func ) { var tuples = [//resolve完成.reject未完成.notify进行中类似于fire,done.fail.progress回调函数的方法类似于add,jQuery.Callbacks()创建回调对象实现回调方法.映射数组. // action, add listener, listener list, final state [ "resolve", "

jQuery的延迟对象

之前看别人的demo,发现在延迟对象被resolve时要执行的代码,有时会写在deferred.then方法里执行,有时会写在deferred.done方法里执行. 这让对延迟对象一知半解的我非常困惑,今天抽时间研究了一下下,发现:在某种环境下,两个方法的确能实现同样的效果. 这种特定的环境是怎样呢? 先看一下deferred.done的用法: // 创建deferred对象 var dtd = $.Deferred(); // 解决deferred对象 dtd.resolve('finish'

javascript --- jQuery --- Deferred对象

javascript --- jQuery --- Deferred对象 javascript的函数式编程是多么引人入胜,jQuery使代码尽可能的精简,intelligent! defer - 必应词典:v.迁延:听从:扣存:[军]使延期入伍所以deferred对象的含义就是"延迟"到未来某个点再执行. jQuery的官方文档给出了用jQuery.ajax()发送请求的基本方式http://api.jquery.com/jQuery.ajax/Example: Save some d

JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

JavaScript学习总结(一)--延迟对象.跨域.模板引擎.弹出层.AJAX示例 目录 一.AJAX示例 1.1.优点 1.2.缺点 1.3.jQuery AJAX示例 二.延迟对象(Deferred) 2.1.回调函数 2.2.deferred.done 三.跨域 3.1.什么是跨域 3.2.JSONP跨域 3.3.jQuery使用JSONP跨域 3.4.跨域资源共享(CORS) 3.5.小结 四.弹出层 五.模板引擎 5.1.Hello World 5.2.方法 5.3.与AJAX结合应