jQuery 工具方法"当"(when)
$.when() 方法是和 $.Deferred() 挂钩的
参数可以是一个或多个延迟对象
返回值是 promise 对象
when 返回延迟对象,后面可以调用 then,
1. 三个延迟对象全部返回 resolve 触发 done
2. 三个延迟对象有一个返回 reject 触发 fail
$.when(df1, df2, df3)
.then(function(){
// done 返回注册成功的回调
},function(){
// fail 返回注册失败的回调
});应用场景
发送三个 ajax 请求,有一个失败的都不行的时候用when,因为$.ajax返回Deferred延迟对象
例子
三个 createScore 返回的都是延迟对象
一个失败返回失败,
三个成功返回成功
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
$.when(createScore1(), createScore2(), createScore3())
.then(function(ms){
console.log('oh yeah I do it. ' + ms);
},function(ms){
console.log('sorry, I am loser. ' + ms);
},function(ms){
console.log('waiting... ' + ms);
});
function createScore1(){
var df = $.Deferred();
setInterval(function (){
var score = Math.random() * 100;
if(score > 50){
df.resolve('通过了');
}else if(score < 40){
df.reject('今天不要在考了');
}else{
df.notify('继续加油');
}
}, 1000);
return df.promise();
}
function createScore2(){
var df = $.Deferred();
setInterval(function (){
var score = Math.random() * 100;
if(score > 50){
df.resolve('通过了');
}else if(score < 40){
df.reject('今天不要在考了');
}else{
df.notify('继续加油');
}
}, 1000);
return df.promise();
}
function createScore3(){
var df = $.Deferred();
setInterval(function (){
var score = Math.random() * 100;
if(score > 50){
df.resolve('通过了');
}else if(score < 40){
df.reject('今天不要在考了');
}else{
df.notify('继续加油');
}
}, 1000);
return df.promise();
}
</script>
Leave a comment
0 Comments.
