欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前台定时动态显示随机数据

程序员文章站 2022-04-01 12:09:52
...

需求是动态显示一个饼图。

(一)思路是先找一个前端类似sleep的函数直接调用,然后再传随机数字。

while(1){
    var time = Date.now();
    function sleep(d){
        while(Date.now - time <= d);
    } 
    sleep(1000);//毫秒
    option.series[0].data[0] = {value:Math.floor(Math.random() * (31 - 25) + 25), name:'成都'};
    myChart.setOption(option);  //使用刚指定的配置项和数据显示图表。
}

结果居然是进入了死循环,页面数据根本加载不出来。发现定时不能这样弄,后来查询到了,js中一般用setTimeout或者setTimeInterval实现函数的延迟执行,但是这两个方法相当于开启的新的线程进行等待,而如果我们想让代码串行的进行等待,这两个函数就实现不了了。


setInterval(displayRandom,10000);//displayRandom是回调函数
function displayRandom(){//逻辑直接在这里面填充
    option.series[0].data[0] = {value:Math.floor(Math.random() * (31 - 25) + 25), name:'成都'};
    myChart.setOption(option);  //使用刚指定的配置项和数据显示图表。
}

前台定时动态显示随机数据

但是问题随之而来,数值居然不是动态变化的。

(二)如何用js刷新DIV:刷新一个DIV,而不是刷新整个页面。

<div id="div2">	            
	<div id="abc" style="width: 419px;height: 423px;"></div>
</div>

刷新一个div就是重新调用控制该div的方法(把div改变的内容封装到一个方法里面)如果需要重新加载值,一般需要先清空。 

myChart = echarts.init(document.getElementById('abc'));
for(var i=0; i<14; i++){
    option.series[0].data[i].value = Math.floor(Math.random() * 1000);
}
myChart.setOption(option);  //使用刚指定的配置项和数据显示图表。和数据显示图表。