JavaScript は非同期言語です。少なくとも、その HTTP API は (ほとんど) 非同期です。
settimeout を使用するべきではありませんが、原因となるイベントのリストを作成するには、代わりに非同期チェーンを使用する必要があります。http://www.infoq.com/articles/surviving-asynchronous-programming-in-javascriptのように、これを支援するライブラリがたくさんあります。
独自のサイトからコンテンツをロードしている場合、JSON が最終的にロードされるときに onsuccess/oncomplete イベントが発生し、それにコールバックを割り当てることができます。実際にどのように呼び出されるかは、使用している JavaScript フレームワークによって異なります。
JSONP と呼ばれる形式でリモート サイトからのデータを使用している場合は、それへのコールバックを定義する必要があります。これは、 onMyDataArrivedのようなパブリック関数名にする必要があります。そこにコールバック コードを追加する必要があります。一部のフレームワークは、この詳細を非表示にし、データが到着したときに削除するランダム関数を生成し、代わりに onSuccess / onComplete に似た API を提供します。
現在、最も人気のある JavaScript フレームワークは jQuery で、次のようなことができます。
$.ajax({
url: 'give_me_my_json.php',
dataType: 'json',
success: function(data){
//call your second javascript
},
error: function(){
//WHOOOPSIE... data could not be loaded
}
});