一、起因
因为最近要做关于图表类型的网页,所以对echarts进行了一番学习,由于时间很紧,所以只学了一点皮毛。
二、学习路程
1、图表的创建
创建一个带宽高的div盒子
<!-- 柱状图 -->
<div id="div" style="width:1136px;height: 369px;position: absolute;top:495px"></div>
对上述div进行初始化实例
var mycharts = echarts.init(document.getElementById("div"),'dark');
创建一个配置,对图表的配置都在里面完成
ps:配置项有很多,可以去echarts官网的配置项手册进行深入学习
(链接:Apache ECharts )
配置完成后,需要将所创建的配置添加到刚才的实例,通过echarts自带的setOption()方法添加。
mycharts.setOption(option);
好了,最基本的图表已经创建好了,说说碰到的问题
三、问题
1、异步请求
通过网络获取相关数据,使用excel对数据进行了基本的筛选,清洗与排序,然后读取文件,再利用xlsx.full.min.js将excel数据转换为数组对象格式后,我意识到当我在读取文件的过程中代码已经执行完成,我的数据没有发挥它应有的作用,想了一会儿,尝试了Promise。
关于Promise没有了解很多,但我理解的Promise就是优先执行一段代码,然后根据所执行代码的返回值判断是否继续执行;所以我在excel文件的最后一行添加了一个状态status,值为1,Promise根据返回值是否为1选择resolve或reject。
if(result[result.length-1].status==1){
count++;
}
if(count==file.length){
key();
}
}
}
function key(){
if(count==file.length){
res(allResult);
}else{
rej("erron");
}
}
由于我的excel文件不止一个,但在后续resolve成功后只能传递一各参数,多余参数会被忽略,所以我需要等待所有excel文件处理为一个数组对象后,才能进行下一段代码的执行。于是我定义了一个count变量,每成功处理完成一份文件,则count++;此时所有文件数据被处理成一个数组对象参数,此时再进行判定,成功;
ps:定义的key函数是一道保险,如果没有key()函数,我们将会在处理完第一个文件后,也就是count=1时进行一次条件判断,此时会直接抛出erron,终止程序。