Javascript 设置多个实时flot图表的超时

Javascript 设置多个实时flot图表的超时,javascript,jquery,html,flot,Javascript,Jquery,Html,Flot,我希望能够有多个实时flot图表。我使用的是一个flot图表,所有内容都通过此功能实时更新: function updateOnce(plot) { plot.setData([{ label: 'G-force', data: getRandomData(), lines: { show: true } }]); plot.setupGrid();//sensorPlots[i] plot.

我希望能够有多个实时flot图表。我使用的是一个flot图表,所有内容都通过此功能实时更新:

        function updateOnce(plot)
        {
            plot.setData([{ label: 'G-force', data: getRandomData(), lines: { show: true } }]);
            plot.setupGrid();//sensorPlots[i]
            plot.draw();

            setTimeout(function () { updateOnce(plot); }, 30);
    }
现在的问题是,我正在动态生成
绘图
,并将其添加到数组中。我如何设置这种类型的函数来迭代数组中的每个点,并在不影响其他点的情况下为数组中的每个点运行此函数

我试过这个:

        function updateOnce()
        {
            $.each(sensorPlots, function (i, val) {
                val.setData([{ label: 'G-force', data: getRandomData(), lines: { show: true } }]);
                val.setupGrid();//sensorPlots[i]
                val.draw();
                setTimeout(updateOnce, 30);
            });

        }

sensorPlots is an array filled with `plots`

但这会导致我的图形随着我添加的每个
绘图越来越快。

问题似乎是每次运行超时函数时,都会为每个绘图声明一个新的超时。这将导致函数的调用频率呈指数级增长,这是非常糟糕的。。。如果你这样做会怎么样:

function updateOnce() {
    $.each(sensorPlots, function (i, val) {
        val.setData([{ label: 'G-force', data: getRandomData(), lines: { show: true}}]);
        val.setupGrid();//sensorPlots[i]
        val.draw();
    });
    setTimeout(updateOnce, 30);        
}

updateOnce();

我不太理解
setTimeout
,所以这可能就是我努力的原因。我也尝试了这个解决方案,但是似乎函数neever被调用了,我很抱歉。昨天我接电话时显然很累。您仍然需要将setTimeout放在update函数中,但不需要放在each循环中。这样,每次运行更新函数时,您将恰好设置一个新超时,而不是为每个绘图设置一个。我已经更新了我的答案。