`
baowp
  • 浏览: 97898 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

浅析jquery1.5之Deferred

阅读更多

 

    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 1.5 API 中文版

    jQuery Version 1.5 API 中文版 IE用户无法在线查看本文档,请下载jQuery API Version1.5 中文版AIR客户端查看,或者使用chrome,safari,firefox,opera等浏览器查看!!! jQuery 1.5 API Cheat Sheet来源 ...

    在jQuery1.5中使用deferred对象 着放大镜看Promise

    在那篇经典的关于jQuery1.5中Deferred使用方法介绍的文章中(译文见这里),有下面一段描述

    在jQuery 1.5中使用deferred对象的代码(翻译)

     Deferred是jQuery1.5新增的一个特性,很多人把它翻译成 “异步队列”,我觉得比较靠谱,毕竟和“延迟”没啥关系,不过这篇文章中我还采用deferred这个单词。 2. 这篇文章在jQuery1.5发布博客中提到,也是目前介绍...

    jQuery 1.5最新版本的改进细节分析

    首先,jQuery.Deferred是jQuery._Deferred的增强版,因此对于这个问题,从jQuery._Deferred入手,就能说明一大半的问题。 什么是Deferred?从字面上看,我的第一反应是“延迟加载”,首字母大写的应该是“类型”的...

    jquery 最新版框架下载(1.32-1.8.2)

    版本主要包括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可以为...

    jquery 最新版框架下载(1.32-1.8.3)

    版本主要包括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可以为...

    jQuery中借助deferred来请求及判断AJAX加载的实例讲解

    deferred对象的延迟功能对jQuery的ajax操作是一个很大的帮助,尤其是回调控制,下面我们就来看一下对jQuery中借助deferred来请求及判断AJAX加载的实例讲解

    谈谈jQuery之Deferred源码剖析

    主要介绍了谈谈jQuery之Deferred源码剖析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    详解jQuery中的deferred对象的使用(一)

    deferred对象是jQuery对...在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数。同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象。 那就

    jQuery中deferred对象使用方法详解

    在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数。同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象。 那就来看看deferred对象的用法。 1...

    jquery基础教程之deferred对象使用方法

    jquery基础教程之deferred对象使用方法

    Decalicious – Deferred Decal System v1.5

    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对象实现异步按顺序加载JS文件

    前段时间看了阮一峰的jQuery的deferred对象详解一文,对jQuery中的deferred的用法了一些了解,今天看到园子里的一篇文章:关于重构JS前端框架的失败经验(顺便怀念那些死去的代码),于是把我之前写的一个利用jQuery...

    以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题

    Promises是一种令代码异步行为更加优雅的抽象,它很有可能是JavaScript的下一个编程范式,一个Promise即表示任务结果,无论该...本文以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题,需要的朋友参考下

    jQuery之Deferred对象详解

    主要介绍了jQuery之Deferred对象详解,本文深入剖析了jQuery Deferred对象的方法属性等内容,需要的朋友可以参考下

    jQuery中的deferred使用方法

    deferred对象是jQuery的回调函数解决方案,jQuery之前的版本中异步回调这块做的不是很好,所以后期补上了该解决方案。接下来通过本文给大家介绍jQuery中的derferred使用方法,非常不错,需要的朋友参考下

    jQuery通过deferred对象管理ajax异步

    主要介绍了jQuery通过deferred对象管理ajax异步的相关资料,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics