複数のxilyフィードからデータを取得し、人力車でプロットするプロットWebページを構築しようとしています( D3に基づく)。私が抱えている問題は、呼び出し関数の外でサーバーから返されたデータにアクセスできないことです。私はjsが初めてなので、呼び出しの非同期の性質を処理する方法がわかりません。を呼び出してxively.feed.history()
履歴データのさまざまなセクションを取得し、それらを 1 つのグラフに連結したいと思います。とにかく、ここに私が試したことに似たものがあります。xivelyチュートリアルに基づいています
xively.setKey('xxxx my key ')
// Replace with your own values
var feedID = 12345678, // Feed ID
selector = "#myelement"; // Your element on the page
var series = [];
xively.feed.history(feedID, { duration: "10days", interval: 1800 ,limit: 1000}, function (mydata) {
mydata.datastreams.forEach( function(stream){
if ((stream.id == "tempinside") || (stream.id == "tempoutside")) {
var points = [];
stream.datapoints.forEach( function(datapoint){
points.push({x: new Date(datapoint.at).getTime()/1000.0, y: parseFloat(datapoint.value)});
// Add Datapoints Array to Graph Series Array
});
series.push({
name: stream.id,
data: points
});
};
});
var graph2 = new Rickshaw.Graph( {
element: document.querySelector("#chart2"),
width: 600,
height: 400,
renderer: 'line',
series: [{
data: series[0].data,
name: series[0].name,
color: 'red'
},{
data: series[1].data,
name: series[1].name,
color: 'blue'
}]
})
})
私が言ったように、私はJavaScriptが初めてなので、何かが足りないかもしれません。関数のコールバック部分内にグラフを配置すると、グラフは正常にxively.feed.history
機能します。関数を複数回呼び出そうとすると、グラフ コードが実行されるまでにデータの準備ができていません。