jQuery Deferredのもっとも初歩的な使い方
例えばコンソールに2秒後に'foo'さらに1秒後に'bar'を出力したいとする。
それを単純にJavaScriptで書いて実行すると…
bar
foo
と、'bar'が先に表示されてしまう。
これを'foo'の後に'bar'が表示されるようにするには…以下のコードに修正すれば良い。
しかし、上記コードはJavaScriptでよくあるコールバック地獄に陥ってしまう。
そこで登場するのが'jQuery.Deferred'である。
$settimeoutという関数を定義する。内容はこんな感じ
1.new $.Deferred()でDeferredオブジェクトを生成
2.通常のsetTimeoutと同様に処理を定義。
この時、処理終了後にDefferdオブジェクトのresolve()を設定
(resolve->処理が正常終了したことを後続処理に通知する)
3.promise()オブジェクトを関数の戻り値として定義
promise()オブジェクトは処理結果教えるからとりあえず処理止めてて!
と伝えるもなので、実際はreturn promise()が先に実行されている。
その後、処理成功時はresolve()、処理失敗時はreject()を呼び出すことにより
後続処理が実行される。
以上、自分用メモでした。