Deferredオブジェクトの説明
3553 ワード
deferredオブジェクトとは
開発中、ajaxリクエストやビッグデータ処理に遭遇することが多く、リクエストされたデータや処理結果はすぐには返されません.通常、完了後の操作を実行するためにコールバックcallbackを設定する必要があります.deferred操作はjqueryまたはzeptoコールバック関数ソリューションです.時間のかかる操作の問題を解決し、それらの操作方法をよりよく制御し、統一的なインタフェースを備えています.
defferedのパラメータを紹介します $.Deferred()はdeferredオブジェクトを生成します. deferred.done()指定操作成功時のコールバック関数 deferred.fail()指定操作に失敗した場合のコールバック関数 deferred.promise()パラメータがない場合、新しいdeferredオブジェクトが返され、そのオブジェクトの動作状態が変更できません.パラメータを受け入れると、パラメータオブジェクトにdeferredインタフェースを配置する役割を果たします. deferred.resolve()deferredオブジェクトの実行状態を手動で「完了」に変更し、done()メソッドを直ちにトリガーします. deferred.reject()この方法はdeferred.resolve()は正反対で、呼び出し後にdeferredオブジェクトの実行状態を「失敗」に変更し、fail()メソッドを直ちにトリガーします. $.when()は、複数の操作にコールバック関数を指定します. deferred.then()は手間を省くためにdone()とfail()を合わせて書くことがあるが,これがthen()メソッドである.
開発中、ajaxリクエストやビッグデータ処理に遭遇することが多く、リクエストされたデータや処理結果はすぐには返されません.通常、完了後の操作を実行するためにコールバックcallbackを設定する必要があります.deferred操作はjqueryまたはzeptoコールバック関数ソリューションです.時間のかかる操作の問題を解決し、それらの操作方法をよりよく制御し、統一的なインタフェースを備えています.
defferedのパラメータを紹介します
$.when($.ajax( "/main.html" )).then(successFunc, failureFunc );
then()に2つのパラメータがある場合、第1のパラメータはdone()メソッドのコールバック関数であり、第2のパラメータはfail()メソッドのコールバックメソッドである.then()にパラメータが1つしかない場合、done()に等しい.9.deferred.Always()この方法もコールバック関数を指定するために使用され、呼び出しがdeferredであるにかかわらず.resolve()かdeferred.reject()は、最後に常に実行されます.
.always( function() { alert(" !");} );```
setTimeout
console.log(" ");```
, ? setTimout , deffered 。 , 。
``` var wait2 = function(){ var tasks = function(){
alert(" test!"); };
setTimeout(tasks,5000); };
$.when(wait2()) .done(function(){ alert(" , !"); }) .fail(function(){ alert(" !"); }); ```
done fail , defferred :
``` function wait(){ var dtd = $.Deferred(); // Deferred
setTimeout(function(){ console.log(" 1");
dtd.resolve("1 ");// Deferred },100); return dtd.promise(); };
wait().done(function(data){ console.log(data+" "); });```
```var dtd1 = $.Deferred(); // Deferred var wait1=function(dtd){
setTimeout(function(){
console.log(" 2");
dtd1.resolve("2 ");// Deferred
},100); };
dtd1.promise(wait1);
wait1.done(function(data){
console.log(data+" "); });
wait1(dtd1);```
### ajax deffered
``` $.ajax({ url: "test.html",
success: function(){ alert(" , !"); },
error:function(){ alert(" !"); } });```
$.ajax() , 1.5.0 , deferred , 。
``` $.ajax("test.html")
.done(function(){ alert(" , !"); })
.fail(function(){ alert(" !"); }); ```
deferred , 。``` $.ajax("test.html")
.done(function(){ alert(" , !");} )
.fail(function(){alert(" !");} )
.done(function(){ alert(" !");} )
.fail(function(){ alert(" !"); } )```
deferred , , 。
``` $.when($.ajax("test1.html"),
$.ajax("test2.html"))
.done(function(){ alert(" , !"); })
.fail(function(){ alert(" !"); }); ```
jquery 1.5.0 deffered ,zepto deffered "deferred","callbacks", zepto , OK
[ Deffered ](http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html),[zepto 1.1.6 api](http://www.css88.com/doc/zeptojs_api/)