jquery と ajax と deferred と promise とかとにかく非同期処理 (書きかけ)
'deferred'という単語が苦手です。
音で覚える事が多いため「デファード」⇒「defferd」とか、毎回誤変換して真実がわからなくなる次第です。
あと全般的に「コールバック」というやつが好きでなく、javascriptにおける落第者というコンプレックスです。コンプリケーティッドです。
- jQuery.Deferred
- 非同期処理をうまく扱うための(標準)モジュールである。
- 非同期処理を連結する際に、コールバック処理の多用を行わずに済むようになる。
- 非同期処理の直列化・並列化。
- エラー処理の記述が綺麗に行える。
- 非同期処理を関数化し再利用性を高められる。
- $.ajax()
- $.getJSON()
- $.Deferred, Deferredオブジェクト
- $.Deferred()でDeferredオブジェクトを作る
- 非同期処理が終わったら、作ったDeferredオブジェクトの状態を変更するように設定しつつ、処理を開始。
- Deferredオブジェクトが持っているPromiseオブジェクトを即座にreturnする
- .promise(), Promiseオブジェクト
- DeferredオブジェクトにはPromiseオブジェクトが内包されている。
- DeferredとPromiseは必ず1:1の対応で存在する。
- 「Promiseを返す」
- .done()
- jquery1.8以降では、.success()を使わず.done()なのだ。
- .fail()
- jquery1.8以降では、.error()を使わず.fail()なのだ。
- .always()
- jquery1.8以降では、.complete()を使わず.always()なのだ。
- .resolve()
- .reject()
- .then()
- .when()
techblog.yahoo.co.jp
qiita.com
jQuery.DeferredでJavaScriptの非同期処理を綺麗に書く - Symfoware
ぜんぜん爆速でわからず辛い。