jQuery+Promise异步控制代码实例

jQuery+Promise异步控制代码实例

一、简单结合

function a(){
	def=$.Deferred();

	$.post('http://mess.ityzm.com/a.php',function(r){
		def.resolve(r);
	});

	return def;
}

a().then(function(r){
	console.log(r);
});

二、复杂结合

function a(){
	def=$.Deferred();

	$.post('http://mess.ityzm.com/a.php',function(r){
		def.resolve(r);
	});

	return def;
}

function b(){
	def=$.Deferred();

	$.post('http://mess.ityzm.com/b.php',function(r){
		def.resolve(r);
	});

	return def;
}

a().then(function(){
	return b();
}).then(function(r){
	console.log(r);
});

三、jQuery提供了一种快捷方法,$.ajax或$.get或$.post直接返回的就是$.Deferred()对象,但这种方法没有resolve等方法,then中直接拿到的是ajax返回值,这种方式简单但不够灵活.

function a(){
	return $.post('http://mess.ityzm.com/a.php');
}

function b(){
	return $.post('http://mess.ityzm.com/b.php');
}

a().then(function(){
	return b();
}).then(function(r){
	console.log(r);
});

jquery的ajax返回一个受限的Deferred对象,还记得受限的Deferred对象吧,也就是没有resolve方法和reject方法,不能从外部改变状态。

参考博客:https://www.cnblogs.com/lvdabao/p/jquery-deferred.html

1 COMMENT

云知梦-强哥

亲测有效,希望对大家有用.

发表评论

邮箱地址不会被公开。 必填项已用*标注

晋公网安备14010902000157号   晋ICP备14001940号-4