読者です 読者をやめる 読者になる 読者になる

jquery と ajax と deferred と promise とかとにかく非同期処理 (書きかけ)

'deferred'という単語が苦手です。
音で覚える事が多いため「デファード」⇒「defferd」とか、毎回誤変換して真実がわからなくなる次第です。
あと全般的に「コールバック」というやつが好きでなく、javascriptにおける落第者というコンプレックスです。コンプリケーティッドです。

  • jQuery.Deferred
    • 非同期処理をうまく扱うための(標準)モジュールである。
    • 非同期処理を連結する際に、コールバック処理の多用を行わずに済むようになる。
    • 非同期処理の直列化・並列化。
    • エラー処理の記述が綺麗に行える。
    • 非同期処理を関数化し再利用性を高められる。
  • $.ajax()
  • $.getJSON()
    • あんまり使ったことが無いのでjsonpが扱えるのか分からない。.ajax()を特定用途に向けてマイルドにした奴という認識。
  • $.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


ぜんぜん爆速でわからず辛い。



$.ajax は、 Promiseインスタンスを返している。