この記事は HTML5 Advent Calendar 2013 の 18日目の記事です。 HTML5 では様々な API が追加されました。そしていくつかの API は、コールバック関数を渡して、結果をその関数の呼び出しによって受け取る、「非同期」の API となっています。たとえば、XMLHttpRequest、Geolocation API、File API、Indexed Database API などが該当します(これらが HTML5 仕様かどうか自信無いですが…)。 これにより、実行時間のかかる処理であっても、JavaScript をブロックせずに実行できるのですが、非同期の関数を連続的に呼び出す場合、コールバック関数が深くネストしてしまい、見通しの悪いコードとなってしまいます。 これを解決する仕組みはいくつかありますが、今回は、jQuery の Deferred という仕組み