여러 xively 피드에서 데이터를 가져오고 Rickshaw (D3 기준)을 사용하여 플로팅 웹 페이지를 작성하려고합니다. 내가 가진 문제는 호출 함수 밖에서 서버에서 반환 된 데이터에 액세스 할 수 없다는 것입니다. 나는 js에 익숙하지 않아 호출의 비동기 특성을 처리하는 방법을 모르겠습니다. xively.feed.history()
으로 전화를 걸어 과거 데이터의 다양한 섹션을 얻고 단일 그래프에 연결합니다. 어쨌든, 여기 제가 시도한 것과 비슷한 것이 있습니다. 내가 말했듯이 그것은 xively tutorialxively.feed.history()에 여러 번 호출
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'
}]
})
})
에 따라, 그래서 어쩌면 내가 뭔가를 누락 자바 스크립트에 새로운 해요. 그래프가 xively.feed.history
함수의 콜백 부분 안에 있으면 잘 작동합니다. 함수를 여러 번 호출하려고하면 그래프 코드가 실행될 때까지 데이터가 준비되지 않은 것입니다.