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 ...
随机推荐
- c# datagridview表格控件常用操作
1) 行右键菜单 private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { ...
- 在Ubuntu里部署Javaweb环境脑残版
最近在瞎折腾Unbunt,喜欢这里的干净和静谧.能留在这里,那么就得在这里工作,于是部署javaweb就成了头件大事了. 咨询了大牛,都说不会命令你玩毛玩linux,但是万万没有想到,原来ubuntu ...
- Android服务之Service
android中服务是运行在后台的东西,级别与activity差不多.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.你可以启动一个服务Service来播放音乐,或者记录你 ...
- N元数组的子数组之和的最大值
题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...
- postgresql编译安装与调试(二)
接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...
- std::vector数据复制
std::vector<boost::shared_ptr <ITEM> > srcItemList; // 数据源 std::vector<ITEM> des ...
- 如何查看python selenium的api
1. 打开命令行: command+R2. 输入: python -m pydoc -p 4567,然后:Enter3. 然后在浏览器中访问http://localhost:45674. 按ctrl+ ...
- 约瑟夫环 --- 面向对象 --- java代码
约瑟夫环 的 面向对象 解法 罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个 ...
- 推荐一个网站Stack Overflow
网站URL:http://stackoverflow.com 我是怎么知道这个网站的呢?其实这个网站非常出名的,相信许多人都知道.如果你不知道,请继续阅读: 一次我在CSDN上面提问,但是想要再问多几 ...
- STL map 用法
首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和mul ...