[解決済み] ディファード・オブジェクトとは何ですか?
質問
jQuery 1.5では、"Deferred Objects"が追加されました。 これは何でしょうか、また、具体的に何をするのでしょうか?
どのように解決するのですか?
遅延オブジェクト
jQuery 1.5では、Deferredオブジェクトは複数のコールバックを自己管理されたコールバックキューに登録し、コールバックキューを適切に起動し、同期または非同期の関数の成功または失敗状態を中継する方法を提供します。
遅延メソッド。
-
遅延.完了()
- Deferredオブジェクトが解決された時に呼び出されるハンドラを追加します。
-
遅延.失敗()
- Deferredオブジェクトが拒否された時に呼び出されるハンドラを追加します。
-
deferred.isRejected()
- Deferredオブジェクトが拒否されたかどうかを判定します。
-
遅延.isResolved()
- Deferredオブジェクトが解決されたかどうかを判定します。
-
遅延.拒否()
- Deferredオブジェクトを拒否し、与えられた引数で任意のfailCallbacksを呼び出します。
-
deferred.rejectWith()
- Deferredオブジェクトを拒否し、与えられたコンテキストとアーギュメントで任意のfailCallbacksを呼び出します。
-
遅延.解決()
- Deferredオブジェクトを解決し、与えられた引数で任意のdoneCallbacksを呼び出します。
-
deferred.resolveWith()
- Deferredオブジェクトを解決し、与えられたコンテキストとアーギュメントを用いて、任意のdoneCallbacksを呼び出します。
-
遅延.then()
- Deferredオブジェクトが解決された時や拒否された時に呼び出されるハンドラを追加します。
Deferred In Actionです。
$.get("test.php").done(
function(){ alert("$.get succeeded"); }
);
$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });
また、既存のajax()メソッドのコールバックは、設定で宣言するのではなく、連鎖させることができるようです。
var jqxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
動作例 Eric Hynds氏のブログ記事より : http://jsfiddle.net/ehynds/Mrqf8/
jqXHR
jQuery 1.5以降、$.ajax()メソッドは、XMLHTTPRequestオブジェクトのスーパーセットであるjXHRオブジェクトを返します。詳細については、$.ajaxのエントリのjXHRセクションを参照してください。
から jquery 1.5リリース :
遅延オブジェクト
Ajax の書き換えとともに モジュールの書き換えとともに、新しい機能が導入されました。 これも一般に公開されました。 公開されました。 遅延オブジェクト . これは この API を使用すると、返り値を扱うことができます。 を扱うことができます。 非同期Ajaxリクエストの戻り値など のような)すぐに存在しない戻り値を扱うことができます。 さらに、このAPIでは 複数のイベントハンドラをアタッチできる をアタッチできるようになります (以前は Ajax API では不可能でした)。 Ajax APIでは不可能でした)。
さらに、公開されている を使って、独自のディファードオブジェクトを作ることができます。 jQuery.Deferredを使って、独自の遅延オブジェクトを作ることができます。より詳細な情報は で見ることができます。 遅延オブジェクト のドキュメントを参照してください。
Eric Hyndsは良い チュートリアルを書いています。 jQueryでDeferredsを使う 1.5 .
関連
-
[解決済み] jQueryのpreventDefault()が発動しない
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] .prop() vs .attr()
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?
-
[解決済み] Deferredsの配列を$.when()に渡す
-
[解決済み] jQuery removeClass ワイルドカード
-
[解決済み】jQuery deferredはどのように使用することができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript - 二重引用符のエスケープ
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] jQuery select onChangeの値を取得する。
-
[解決済み] jQuery UIダイアログのクローズボタンを削除するには?
-
[解決済み] .on('click') と .click() の違いについて
-
[解決済み] 変更イベントでradioを使用するには?
-
[解決済み] ドロップダウンのアイテムの選択値をjQueryで取得する
-
[解決済み] jQuery セレクタ。Id Ends With?
-
[解決済み] jQueryで多段式フォームをリセットする
-
[解決済み】jQuery:keyPress Backspaceが発射されない?