非同期処理

ScrapingしたJRAのデータは、競馬場毎のJSONファイルとしている。
対象のコースの傾向を見る目的なのでそれでよいのだが、競走馬はいろいろなコースを走る。
なので、或る競走馬の成績を一覧しようとすると、全ての競馬場のファイルを読み込む必要がある。
Forループで回して、jQueryの$.getJSON()で順次、競馬場のデータを読んで、都度該当する競走馬のデータを表示する。
競馬場のデータ毎に表示されるが、非同期処理なので、表示される順は読み込みが完了した順?で、ループで回した競馬場の順番ではない。
つまり、制御できていない。
できれば、日付順にしたいので、別の配列に落として、Sortしてから書き出したい。
しかし、読み込みが終わった状態が捕らえられなくて、配列に落とす作業が非同期に無意味に先に実行されてしまう。
同期処理、非同期処理というのが理解できていなかったためだが、$.getJSON()のコールバックの中で配列に落としていけばよいことに気付いた。
コールバックは元の関数の作業が終わってから開始される。
競馬場を回すのも、Forループではなくて、$.getJSON()のコールバックの最後に次の競馬場の番号を引き数で渡して、再帰的に自分自身を呼べばなんの問題もなかった。