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.