<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ϞҪ͢τյ</title> <script src="jquery-2.0.3.js"></script> <script> jQuery.extend({ Deferred : function(){}, when : function(){} }); $.Deferred(); -> $.Callbacks(); $.when(); ғԙהгˇܹԚܘַߪעքì(3043 , 3183) Deferred : ғԙהг : הӬҽքͳһڜm ------------------------------------------------------------------------- var cb = $.Callbacks(); setTimeout(function(){ alert(111); cb.fire(); },1000); cb.add(function(){ alert(222); }); //Јկ111 ՙկ222 Ӭҽ ------------------------------------------------------------------------ var dfd = $.Deferred(); setTimeout(function(){ alert(111); dfd.resolve();//`̆Ԛfire },1000); dfd.done(function(){//`̆Ԛadd alert(222); }); //Јկ111 ՙկ222 Ӭҽ ------------------------------------------------------- setTimeout(function(){ alert(111); },1000); alert(222);//Јկ111 ՙկ222 Ӭҽ ------------------------------------------------------- var dfd = $.Deferred(); setTimeout(function(){ alert(111); dfd.notify();//`̆Ԛfire },1000); dfd.progress(function(){//`̆Ԛadd alert(222); }); //Јկ111 ՙկ222 Ӭҽ $.ajax({ url : 'xxx.php', success : function(){ alert('ԉ٦'); }, error : function(){ alert('ʧќ'); } }); //$.ajaxŚ׃ғԙ٦Ŝ $.ajax('xxx.php').done(function(){ alert('ԉ٦'); }).fail(function(){ alert('ʧќ'); }); ------------------------------------------------------------- var dfd = $.Deferred(); setTimeout(function(){ //alert(111); //dfd.resolve(); dfd.reject();//`̆Ԛfire },1000); dfd.done(function(){//`̆Ԛadd alert('ԉ٦'); }).fail(function(){//`̆Ԛadd alert('ʧќ'); }); //Јկ111 ՙկ222 Ӭҽ ---------------------------------------------------------- var dfd = $.Deferred(); setInterval(function(){ alert(111); dfd.resolve();//ԉ٦הӦdone dfd.reject();//ʧќהӦfail dfd.notify()//אהӦprogressìѐאܡԐ͵ì̹ӔҪlѸԥע },1000); dfd.done(function(){ alert('ԉ٦'); }).fail(function(){ alert('ʧќ'); }).progress(function(){ alert('א'); }); ----------------------------------------------------------------------- $(function(){ var cb = $.Callbacks('memory'); cb.add(function(){ alert(1); }); cb.fire(); $('input').click(function(){ cb.add(function(){//ԐmemoryҢȒfireӑޭִѐڽһՎ,bִܴѐfire(), alert(2); }); }); ---------------------------------------------------- var dfd = $.Deferred(); setTimeout(function(){ alert(111); dfd.resolve(); },1000); dfd.done(function(){//ֈresolve()ִѐկԶaaa, alert('aaa'); }); $('input').click(function(){//֣ܷдťկԶbbb,{ԃքߍˇcallbackքmemory dfd.done(function(){ alert('bbb'); }); }); }); --------------------------------------------------------------- done fail progress resolve reject notify ------------------------------------------------------------------------ function aaa(){ var dfd = $.Deferred(); alert( dfd.state() ); setTimeout(function(){ dfd.resolve(); alert( dfd.state() ); },1000); return dfd.promise(); } var newDfd = aaa(); newDfd.done(function(){ alert('ԉ٦'); }).fail(function(){ alert('ʧќ'); }); newDfd.reject(); ----------------------------------------------------------------------- alert(i^1);//0^1=1 1^1=0 var dfd = $.Deferred(); setTimeout(function(){ //dfd.resolve(); dfd.reject('hi'); },1000); dfd.always(function(){ alert('hello'); }); dfd.then(function(){//ԉ٦ܘַ alert(1); },function(){//ʧќܘַ alert(arguments[0]); },function(){//ѐאܘַ alert(3); }); ---------------------------------------------------------------------- var dfd = $.Deferred(); setTimeout(function(){ dfd.resolve('hi'); },1000); var newDfd = dfd.pipe(function(){ return arguments[0] + 'Įζ'; }); newDfd.done(function(){ alert( arguments[0] ); }); </script> </head> <body> <input type="button" value="֣ܷ"> </body> </html>
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script src="jquery-2.0.3.js"></script> <script> var dfd = $.Deferred(); dfd.done();//完成触发成功的方法 未完成触发fail方法。 $.when().done();//when返回延迟对象,when可以对多个延迟对象做操作。 -------------------------------------------------------------------- function aaa(){ var dfd = $.Deferred(); dfd.resolve();//完成 dfd.reject(); return dfd; } function bbb(){ var dfd = $.Deferred(); //dfd.resolve(); dfd.reject();// return dfd; } aaa().done(function(){ alert('成功'); }); $.when( aaa() , bbb() ).done(function(){//aaa,bbb延迟对象都完成执行done,都失败走fail //aaa,bbb要返回~延迟对象 alert('成功'); }).fail(function(){ alert('失败'); }); $.when( ).done(function(){ alert('成功'); }); /*when的源码 return $.Deferred(); arguments[0] arguments[1] arguments[2] arguments[3] done() 计数器 :4*/ function aaa(){ var dfd = $.Deferred(); dfd.resolve(); return dfd; } function bbb(){ var dfd = $.Deferred(); dfd.reject(); //return dfd; } $.when( 123 , 456 ).done(function(){ alert(arguments[0]); alert(arguments[1]); alert('成功'); }).fail(function(){ alert('失败'); }); $.when( aaa() , 111 , bbb() , 222 ).done(function(){ alert('成功'); }).fail(function(){ alert('失败'); }); </script> </head> <body> </body> </html>