この記事について
| 環境 | javascript |
|---|---|
| 目的 | ajaxを使わない重い処理でローディング画像を出す |
| 結果 | setTimeout でいったん関数を終わらせてから重い処理をする |
つまずきポイント要約
- javascriptは関数の実行中に画面の書き換えが起こらない(実行キューが空になってから描画される)
ぐるぐる回るローディング画像の具体的な表示の仕方についてはこちらを参考
ajaxありの場合
dispLoading("処理中..."); //ローディング画像を表示するユーザー定義関数
//ajax処理
removeLoading(); //ローディング画像を消すユーザー定義関数
ajaxなしの場合
dispLoading("処理中...");
//javascript で描写が画面に反映されるタイミングは、関数の実行が終わってから。
//そのため、ローディング画面を表示させるために一旦ここで関数を終わらせる。
setTimeout(function() {
//時間がかかるjavascriptの処理(ajaxでない)。
removeLoading();
}, 0);
javascriptは、関数の実行中にページの書き換えは起こらない。関数の実行キューが空になって時点ではじめてページの書き換えが起こることに注意。
