JQuery .get() メソッドと javascript for ループを使用して、外部ファイルからのデータを処理しようとしています。スタックオーバーフローのコールバックからのクロージャーと戻り値について数時間読んだことがありますが、なぜこれが機能しないのかまだ混乱しています。
変数headersとcountryDataは、内部コールバック関数に関してスコープ内でグローバルではありませんか? コールバック関数内で意図したとおりに値が割り当てられていますが、完了したらどうすればそれらにアクセスできますか? そして、おそらく alert() 関数を使用しない例はありますか?
function processData(inCSV){
var headers;
var countryData = [];
$.get(inCSV, function(data) {
var lines = data.split('\r\n');
for(var i=0;i<=lines.length-1;i++){
var lineData = lines[i].split(',');
if(i != 0){
countryData[lineData[1]] = lineData.slice(2,lineData.length);
} else {
headers = lineData.slice(2,lineData.length);
}
}
console.log('inside',headers); // output 'inside ["1971", "1972", "1973" ...'
console.log('inside',countryData['Brazil']); // output 'inside ["56.4", "54.6", ..'
});
console.log('outside',headers); // output 'outside undefined' ...!?
console.log('inside',countryData['Brazil']); // output 'outside undefined' ...!?
}