0

JSONデータを読み取ってグラフに載せる以下の関数があります。チャートデータを10秒ごとに自動更新したいのですが。

私はdojo/timingとchart.updateSeriesを見てきましたが、この2つを組み合わせるとうまくいくと思いますが、これをどのように実装できるかわかりません。どんな助けでも大歓迎です。

function(xhr, json, arrayUtil, number, Chart, theme) {

            var def = xhr.get({
                url: "cpuusage.json",
                handleAs: "json"
            });

            def.then(function(res){
                var chartData = [];                 
                arrayUtil.forEach(res.chart, function(chart){
                    chartData[chart.x] = number.parse(chart.y);
                });

                //Draw chart
                var chart = new Chart("chartNode2");
                chart.setTheme(theme);
                chart.addPlot("default", {
                    type: "Columns",
                    markers: true,
                    gap: 5
                });
                chart.addAxis("x");
                chart.addAxis("y", { vertical: true, fixLower: "major", fixUpper: "major" });
                chart.addSeries("Monthly Sales",chartData);
                chart.render();

            }, function(err){
                console.error("Failed to load JSON data");
            });
        }
4

1 に答える 1

2

そのようなことを試してください:

var interval = setInterval(function(){
    // let's get new data
    xhr.get({
        url: "cpuusage.json",
        handleAs: "json"
    }).then(function(res){
        // data prep step - just like before
        var chartData = [];
        arrayUtil.forEach(res.chart, function(chart){
            chartData[chart.x] = number.parse(chart.y);
        });
        // update chart (it was created before)
        chart.updateSeries("Monthly Sales", chartData);
        chart.render();
    }, function(err){
        console.error("Failed to load updated JSON data");
    });
}, 10000); // 10s
...
// when we want to cancel updates
clearInterval(interval);

申し訳ありませんが、私は を使用しませんdojo/timingでした。ここではあまり理由がわかりません。単純なことを行うための単純な方法を好みます。

于 2012-08-09T08:30:21.803 に答える