Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于实时数据平滑地设置前端表示的动画?_Javascript_Css_Animation_Svg_Real Time - Fatal编程技术网

Javascript 如何基于实时数据平滑地设置前端表示的动画?

Javascript 如何基于实时数据平滑地设置前端表示的动画?,javascript,css,animation,svg,real-time,Javascript,Css,Animation,Svg,Real Time,我们将开发一个基于实时数据的HTML5+CSS+JavaScript web应用程序 数据记录在一个.csv文件中,我们通过使用setInterval触发AJAX调用来检索最新的记录。目前,该项目在Apache服务器上实现,不使用任何数据库。当我们试图通过CSS/SVG/JavaScript绘制基于此类数据的动画图时,动画通常会被数据更新中断,并且转换不平稳 例如,我们尝试使用JavaScript库在首页上绘制一条曲线,当数据被setInterval函数更新时,波形被中断。有没有办法在不使用计时

我们将开发一个基于实时数据的HTML5+CSS+JavaScript web应用程序

数据记录在一个.csv文件中,我们通过使用setInterval触发AJAX调用来检索最新的记录。目前,该项目在Apache服务器上实现,不使用任何数据库。当我们试图通过CSS/SVG/JavaScript绘制基于此类数据的动画图时,动画通常会被数据更新中断,并且转换不平稳

例如,我们尝试使用JavaScript库在首页上绘制一条曲线,当数据被setInterval函数更新时,波形被中断。有没有办法在不使用计时器刷新的情况下平滑地更新曲线?我的代码在这里:

function getData(limit, callback) {
    var data = setInterval(function () {
        var json = null;
        $.ajax({
            'async': false,
            'global': false,
            'url': "../data/data.csv?t="+new Date().getTime(),
            'success': function (data) {
                json = data;
            }
        });
        var count = json.replace(/[^\n]/g, '').length;
        var i = count - 1;
        var lines = json.split("\n");
        var items = lines[i].split(",");
        callback(items);
    }, limit);
}

getData(1000, function (items){
    //Used to remove the last scene
    document.getElementById("wave").innerHTML = '';
    //Start to draw the waving curve
    var siriWave = new SiriWave({
        container: document.getElementById('wave'),
        width: 1920,
        height: 400,
        speed: items[1],
        frequency: items[2],
        autostart: true
    });
});
此处的示例数据为csv格式:

2016-07-20, 100, 20
2016-07-21, 120, 40
2016-07-22, 140, 60

问题是曲线从当前状态突然更改为下一个更新状态。有人对如何解决动画问题有想法吗?欢迎使用后端和前端解决方案。非常感谢。

你可以用插座代替计时器。根据您的服务器端技术,有很多方法可以做到这一点。我特别推荐使用NodeJS,它可以很好地管理许多类似这样的实时问题。

这个问题要么过于宽泛,基于观点,要么需要讨论,因此不适合堆栈溢出。如果您有一个具体的、可回答的编程问题,请提供完整的细节。这是模糊的。想象一下,一位同事来找你,说我的动画不行。你会怎么做?可能要求查看实际代码:我怀疑您需要创建一个包含少量模拟数据的应用程序,而不必加载ajax,这样我们就可以看到您在做什么。这似乎更像是SiriWave的问题,而不是其他任何问题。虽然我不熟悉,但从他们的API来看,他们有一个setSpeed和setFrequency选项。如果实现得很好,使用他们的更新方法,而不是简单地把它吹走,每次都创建一个新的更新方法就可以了。