json を読み取り、簡単な処理を行い、結果として配列を返す単純な関数を作成したいと考えています。
私は現在、以下のコードを持っています。ただし、関数は常に [] を返します。
temps をグローバル スコープに移動すると、最初に [] が返され、2 回目に呼び出されたときにデータが追加され、3 回目に呼び出されたときに長さが 2 倍になります。
function getTempData() {
var temps = [];
$.getJSON('temp.json', function(data) {
data = data.observations.data;
for(var i = 0; i < data.length; i++) {
year = parseInt(data[i].aifstime_utc.substr(0, 4));
month = parseInt(data[i].aifstime_utc.substr(4, 2));
day = parseInt(data[i].aifstime_utc.substr(6, 2));
hour = parseInt(data[i].aifstime_utc.substr(8, 2));
min = parseInt(data[i].aifstime_utc.substr(10, 4));
time = Date.UTC(year, month, day, hour, min);
temps.push([time, data[i].air_temp]);
}
});
return temps;
}
他のいくつかの質問を見ると、これは非同期性と関係があるようです? 同期的にロードする方法はありますか?ハイチャートでデータをグラフ化したいと思います。