jquery1.5最大的改进是加入了
Deferred,
它的出现
,
使函数的回调方便很多
,
取代了网页加载完成后回调的函数数组
,
与重写后的
ajax
方法的返回实例结合
.
确切地说,Deferred
是由两个
_Deferred
实例组成
,
一个用于成功解决后的回调
(deferred),
一个用于失败返回后的回调
(failDeferred),
其中
failDeferred
所属函数被改了名字注册入
deferred.
jQuery.Deferred()返回实例deferred.
jQuery.extend(deferred, {
fail : failDeferred.done,
rejectWith : failDeferred.resolveWith,
reject : failDeferred.resolve,
isRejected : failDeferred.isResolved
})
DOM加载后回调的
readyList
只是一个
_Deferred
的实例
.
_Deferred也只是对于数组的封装
,
可将需要回调的函数注册进入
,
并提供几个可操作的函数
看下面一个例子:
// Create a Deferred and return its Promise
function asyncEvent() {
var dfd = jQuery.Deferred();
dfd.done(function() {
console.info(1)
}).done([ function() {
console.info(2)
}, function() {
console.info(3)
} ]).fail(function() {
console.info(-1)
});
setTimeout(function() {
dfd.resolve("hurray");
}, 1100);
setTimeout(function() {
dfd.reject("sorry");
}, 1200);
return dfd.promise(); // 实际上是 dfd 的部分复制 , 也可以返回 dfd, 但不推荐
}
// Attach a done and fail handler for the asyncEvent
$.when(asyncEvent()).then(function(status) {
console.info(status + ', things are going well');
}, function(status) {
console.info(status + ', you fail this time');
});
ajax返回实例与
deferred
结合后
,
可以写成
$.ajax({
url : "a.html"
}).done( function () { //success either
console.info(1);
}).fail( function () { //error either
console.info(2)
}).complete( function () {
console.info(3)
})
以下是jquery官方对于api的解释
deferred. done ()
Add handlers to be called when the Deferred object is resolved.
deferred.fail()
Add handlers to be called when the Deferred object is rejected.
deferred.isRejected()
Determine whether a Deferred object has been rejected.
deferred.isResolved()
Determine whether a Deferred object has been resolved.
deferred.promise()
Return a Deferred's Promise object.
deferred.reject()
Reject a Deferred object and call any failCallbacks with the given args.
deferred.rejectWith()
Reject a Deferred object and call any failCallbacks with the given context and args.
deferred.resolve()
Resolve a Deferred object and call any doneCallbacks with the given args.
deferred.resolveWith()
Resolve a Deferred object and call any doneCallbacks with the given context and args.
deferred.then()
Add handlers to be called when the Deferred object is resolved or rejected.
分享到:
相关推荐
jQuery Version 1.5 API 中文版 IE用户无法在线查看本文档,请下载jQuery API Version1.5 中文版AIR客户端查看,或者使用chrome,safari,firefox,opera等浏览器查看!!! jQuery 1.5 API Cheat Sheet来源 ...
在那篇经典的关于jQuery1.5中Deferred使用方法介绍的文章中(译文见这里),有下面一段描述
Deferred是jQuery1.5新增的一个特性,很多人把它翻译成 “异步队列”,我觉得比较靠谱,毕竟和“延迟”没啥关系,不过这篇文章中我还采用deferred这个单词。 2. 这篇文章在jQuery1.5发布博客中提到,也是目前介绍...
首先,jQuery.Deferred是jQuery._Deferred的增强版,因此对于这个问题,从jQuery._Deferred入手,就能说明一大半的问题。 什么是Deferred?从字面上看,我的第一反应是“延迟加载”,首字母大写的应该是“类型”的...
版本主要包括jquery1.32,jquery1.42,jquery 1.44,jquery 1.5,jquery1.6,jquery1.8.2版本。 Query1.5下载,包括:jquery-1.5.js, jquery-1.5.min.js, jquery-1.5-vsdoc.js 其中 jquery-jquery-1.5-vsdoc.js可以为...
版本主要包括jquery1.32,jquery1.42,jquery 1.44,jquery 1.5,jquery1.6,jquery1.8.2版本。 Query1.5下载,包括:jquery-1.5.js, jquery-1.5.min.js, jquery-1.5-vsdoc.js 其中 jquery-jquery-1.5-vsdoc.js可以为...
deferred对象的延迟功能对jQuery的ajax操作是一个很大的帮助,尤其是回调控制,下面我们就来看一下对jQuery中借助deferred来请求及判断AJAX加载的实例讲解
主要介绍了谈谈jQuery之Deferred源码剖析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
deferred对象是jQuery对...在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数。同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象。 那就
在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数。同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象。 那就来看看deferred对象的用法。 1...
jquery基础教程之deferred对象使用方法
Decalicious is here to satisfy all your longings for fancy Deferred Decals! Deferred Decals: Modify albedo, normals, specular, smoothness and emission for a plethora of effects Full Lighting & ...
前段时间看了阮一峰的jQuery的deferred对象详解一文,对jQuery中的deferred的用法了一些了解,今天看到园子里的一篇文章:关于重构JS前端框架的失败经验(顺便怀念那些死去的代码),于是把我之前写的一个利用jQuery...
Promises是一种令代码异步行为更加优雅的抽象,它很有可能是JavaScript的下一个编程范式,一个Promise即表示任务结果,无论该...本文以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题,需要的朋友参考下
主要介绍了jQuery之Deferred对象详解,本文深入剖析了jQuery Deferred对象的方法属性等内容,需要的朋友可以参考下
deferred对象是jQuery的回调函数解决方案,jQuery之前的版本中异步回调这块做的不是很好,所以后期补上了该解决方案。接下来通过本文给大家介绍jQuery中的derferred使用方法,非常不错,需要的朋友参考下
主要介绍了jQuery通过deferred对象管理ajax异步的相关资料,需要的朋友可以参考下