前台定时动态显示随机数据
程序员文章站
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); //使用刚指定的配置项和数据显示图表。和数据显示图表。
推荐阅读