我正在尝试构建一个绘图网页,该网页从多个 xively 提要中获取数据并使用Rickshaw(基于D3)绘制它们。我遇到的问题是我无法访问从调用函数之外的服务器返回的数据。我是 js 新手,所以我不确定如何处理调用的异步性质。我想调用xively.feed.history()
来获取历史数据的各个部分,并将它们连接到一个图表上。无论如何,这与我尝试过的类似。它基于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
工作。如果我尝试多次调用该函数,那么在图形代码运行时数据还没有准备好。