xページにわたって1ページあたり50エントリを持つjsonファイルにアクセスしています。エントリの総数は 500 です。これは 10 ページに相当します。
ページ 1 の json ファイルからデータを取得し、データを配列に渡し、関数を繰り返しますが、今回はページ 2 です。
私は関数を作成し、各ページを完全にインクリメントしてフェッチしてループしますが、json データが解析されて配列に渡されるのを待たずに、再度ループします。
基本的に、データが処理されるまで待ってから続行したいと思います。
これまでの私のコードはおおよそ次のとおりです。
function getJsonData(metroID){
currentPageNo = 0;
totalPages = 'x';
count = 0;
function jsonLoop(){
meroAreaSearchString = 'http://jsonurl'+currentPageNo;
$.getJSON(meroAreaSearchString,{},function( data ){
if(totalPages == 'x'){
var totalEntries = data.resultsPage.totalEntries;
var perPage = data.resultsPage.perPage;
totalPages = (totalEntries/perPage);
log(totalEntries+', '+perPage+', '+totalPages);
log(Math.round(totalPages));
}
$.each(data.resultsPage.results.event, function(i,item){
var name = item.displayName;
var type = item.type;
var valueToPush = new Array();
valueToPush[0] = name;
valueToPush[1] = type;
valueToPush[3] = count;
locations.push(valueToPush);
count++;
});
});
if(currentPageNo == totalPages){
log(locations);
alert('finished processing all results');
}else{
currentPageNo++;
jsonLoop();
}
currentPageNo++;
jsonLoop();
}
}