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