jQuery.Deferred を使って、可変数の非同期処理の全ての終了を待ってから処理を実行する方法について簡単に紹介します。なお、この記事は jQuery.Deferred の記事ではなくて、どちらかというと関数オブジェクトの apply メソッドについての簡単な用法の解説になります。
クライアントサイドの Web アプリケーションで、外部 API などからデータを読み込み、その結果を待って処理を行いたい場合があります。jQuery を使うと、通常、次のように書きます。
jQuery.Deferred を使って、可変数の非同期処理の全ての終了を待ってから処理を実行する方法について簡単に紹介します。なお、この記事は jQuery.Deferred の記事ではなくて、どちらかというと関数オブジェクトの apply メソッドについての簡単な用法の解説になります。
クライアントサイドの Web アプリケーションで、外部 API などからデータを読み込み、その結果を待って処理を行いたい場合があります。jQuery を使うと、通常、次のように書きます。
例えば、画像を予めロードし、その画像のロード完了後に何か処理を行いたい時、img 要素の onload イベントを利用することになると思います。jQuery を使った例だと、次のようになります。
1 2 3 4 5 6 |
var img; img = $('<img>'); img.attr('src', 'http://...image_url...'); img.on('load', function() { // ...any processing on loaded... }); |
ところが、IE8において、画像がブラウザにキャッシュされていると img 要素の onload イベントが呼ばれないという現象があります。うむむ。これはちょっとやっかい。。。
2013 年 6 月 15 日開催の WordPress のビッグイベント「WordCamp Kobe 2013」に参加しました! そのレポート?…というよりは、色々と思ったことを書かせて頂きます。
jQuery は非常に柔軟に DOM 要素の選択が出来る、世界中でもっとも成功した JavaScript ライブラリの1つです。本稿では、この jQuery の優れた特徴や特性をなるべく活かしたコードを記述するための方法について考えてみたいと思います。なお、本稿は jQuery についての基礎的な知識を持った方を対象とします。
jQuery.Deferred の使い方を示した記事はたくさんありますので、ここではなるべく原理にフォーカスして改めて説明してみます。なお、この記事は既に jQuery.Deferred の利用方法をある程度理解されている方に向けての記事になります。