$.Deferred初学
博客专区 > LM_Mike 的博客 > 博客详情
$.Deferred初学
LM_Mike 发表于8个月前
$.Deferred初学
  • 发表于 8个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="js/jquery-1.12.3.js"></script>
<title>play2</title>
</head>
<body>
<button id="mybtn">点击</button>
<div id="mydiv">添加数字...</div>
<script>
$(function(){
	var def = $.Deferred();  //新建一个延迟对象
	
	function func1(str){
		var $p = $("<p>"+str+1+"</p>")
		$("#mydiv").append($p);
	}
	function func2(str){
		var $p = $("<p>"+str+2+"</p>")
		$("#mydiv").append($p);
	}
	function func3(str){
		var $p = $("<p>"+str+3+"</p>")
		$("#mydiv").append($p);
	}
	
	def.done([func1,func2],func3);  //定义延迟对象完成后执行的函数,可以是单个函数或者数组函数
	
	$("#mybtn").click(function(e){
		def.resolve("数字:");  //延迟对象执行resolve(arg),那么该延迟对象的done()里的函数将被调用,参数ar也将传给里面的每一个函数
	});							   //本例中,相当于执行func1("数字:"),func2("数字:"),func3("数字:")	
});
</script>
</body>
</html>

> 下面这段出自阮一峰博客 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

deferred对象的最大优点,就是它把这一套回调函数接口,从ajax操作扩展到了所有操作。也就是说,任何一个操作----不管是ajax操作还是本地操作,也不管是异步操作还是同步操作----都可以使用deferred对象的各种方法,指定回调函数。

	var def = $.Deferred();  //新建递延对象
	function wait(def){
		var task = function(){
			def.resolve("哈话");
		}
		setTimeout(task,3000);
		return def;  //返回递延对象
	}
	$.when(wait(def)).done(function(str){  //$.when()只接受递延对象作为参数,因此wait函数的return def意图很明显啦
		alert("我拉"+str);
	})
});
共有 人打赏支持
粉丝 2
博文 217
码字总数 37930
×
LM_Mike
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: