jQuery Deferred(http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$.when</title>
<script src="http://the5fireblog.b0.upaiyun.com/staticfile/jquery-1.10.2.js"></script>
<script>
function fn1(){
setTimeout(alert("fn1"),5000);
}
$.when(fn1()).done(function(){
alert("fn1执行完毕!")
}).fail(function(){
alert("出错了!")
})
</script>
</head>
<body> </body>
</html>
但是,这样写的话,done()方法会立即执行,起不到回调函数的作用。原因在于$.when()的参数只能是deferred对象,所以必须对wait()进行改写:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$.when</title>
<script src="http://the5fireblog.b0.upaiyun.com/staticfile/jquery-1.10.2.js"></script>
<script>
/*function fn1(){
setTimeout(alert("fn1"),5000);
}
$.when(fn1()).done(function(){
alert("fn1执行完毕!")
}).fail(function(){
alert("出错了!")
})*/
var dtd = $.Deferred();//新建一个Deferred对象
var wait = function(dtd){
var test = function(){
alert("test执行完毕!");
// dtd.resolve();//改变deferred对象的状态
dtd.reject();
}
setTimeout(test, 5000);
return dtd;
}
$.when(wait(dtd)).done(function(){
alert("成功!")
}).fail(function(){
alert("失败!")
})
</script>
</head>
<body> </body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$.when</title>
<script src="http://the5fireblog.b0.upaiyun.com/staticfile/jquery-1.10.2.js"></script>
<script>
var wait = function(){
var dtd = $.Deferred();//新建一个Deferred对象
var test = function(){
alert("test执行完毕!");
dtd.resolve();//改变deferred对象的状态
// dtd.reject();
}
setTimeout(test, 2000);
return dtd.promise();//返回promise对象
}
// var d = wait(dtd);//新建一个d对象,以为对这个对象进行操作
$.when(wait()).done(function(){
alert("成功!")
}).fail(function(){
alert("失败!")
})
// dtd.resolve();
// d.resolve();//promise对象不能resolve,这个语句无效
</script>
</head>
<body> </body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>$.when</title>
<script src="http://the5fireblog.b0.upaiyun.com/staticfile/jquery-1.10.2.js"></script>
<script>
var wait = function(){
var test = function(){
alert("test执行完毕!");
}
setTimeout(test, 2000);
}
$.Deferred(wait).done(function(){
alert("成功!")
}).fail(function(){
alert("失败!")
})
</script>
</head>
<body> </body>
</html>
jQuery Deferred(http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html)的更多相关文章
- http://www.ruanyifeng.com/blog/2011/09/restful
		http://www.ruanyifeng.com/blog/2011/09/restful 
- 摘自(http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html)
		理解Linux系统负荷 作者: 阮一峰 一.查看系统负荷 如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行) ... 
- 简单明了的掌握diff命令?  参考: http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html
		diff是比较两个 文本文件, 或目录,(中名字相同的文件) diff 是按行来比较的, 只要两个对应的行, 不完全一致, 就报告为不同, 否则就视为相同. (一行中任意一点的不同...) 检查时, ... 
- jQuery deferred when用法
		一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们 ... 
- 利用 Jquery Deferred 异步你的程序
		最近在做公司QA系统改造时,有这样的一个场景. QA系统中有些数据项需要从JIRA平台(一个国外项目与事务跟踪工具)中获取,JIRA平台提供了很完善的Rest API. 现在的要求是,在QA系统中提交 ... 
- javascript --- jQuery --- Deferred对象
		javascript --- jQuery --- Deferred对象 javascript的函数式编程是多么引人入胜,jQuery使代码尽可能的精简,intelligent! defer - 必应 ... 
- jQuery deferred学习笔记
		简介 在jQuery1.5.0版本引入,为了实现Deferred对象,jQuery改写了ajax.是由jQuery.Deferred()方法创建的链式对象. $.Deferred在jQuery代码自身 ... 
- jquery Deferred使用经验
		这周做了个小活动(http://aoqi.100bt.com/zt-2016duanzi/index.html),刚开始时候没看好需求,逻辑都写一块了 最后各种坑要填补,从中也获取了些经验和教训,下面 ... 
- JQuery Deferred 对象
		http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html <jQu ... 
随机推荐
- Android RecyclerView使用详解(三)
			在上一篇(RecyclerView使用详解(二))文章中介绍了RecyclerView的多Item布局实现,接下来要来讲讲RecyclerView的Cursor实现,相较于之前的实现,Cursor有更 ... 
- JS面向对象组件(六) --  拖拽功能以及组件的延展
			HTML部分 <div id="div1"></div> <div id="div2"></div> CSS部分 ... 
- PHP中cookie与session总结
			PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置.Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用. 理解:session用于单一用户与服务器的 ... 
- 嵌入式 fork与vfork的区别
			fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 ... 
- Axis,axis2,Xfire以及cxf对比
			http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ... 
- Chopsticks
			题意: n个数3个相邻是一组,求选k组使得,各组组内较小的两个数的差之和最小. 分析: 对于每个数选或不选的问题,dp[i][j]表前i个数选了j组得到的最小和. dp[i][j]=min(dp[i- ... 
- 用Asp.net实现简单的文字水印
			用Asp.net实现简单的文字水印 经常看见MOP上有人贴那种动态的图片,就是把一个字符串作为参数传给一个动态网页,就会生成一个带有这个字符串的图片,这个叫做文字水印.像什么原来的熊猫系列,还有后来 ... 
- win8 VS控件信息
			<TextBlock x:Name="button_1" HorizontalAlignment="Center" TextWrapping=" ... 
- C语言的 (强制类型转换) 以及 '字符字面值'
			C语言的显式/隐式类型转换,都有一个中间变量的存在,原数据的类型.内容都不变. 以下代码,都用GCC编译. #include<stdio.h> int main() { char c = ... 
- C语言实现strlen
			strlen: #ifndef STRLEN_H #define STRLEN_H #include <stdio.h> // 参考微软的写法 int cat_strlen(const c ... 
