一、起因

因为最近要做关于图表类型的网页,所以对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');

                创建一个配置,对图表的配置都在里面完成

echart emphasis 属性_读取文件

ps:配置项有很多,可以去echarts官网的配置项手册进行深入学习

(链接:Apache ECharts )

                配置完成后,需要将所创建的配置添加到刚才的实例,通过echarts自带的setOption()方法添加。

mycharts.setOption(option);

好了,最基本的图表已经创建好了,说说碰到的问题

三、问题

        1、异步请求

通过网络获取相关数据,使用excel对数据进行了基本的筛选,清洗与排序,然后读取文件,再利用xlsx.full.min.js将excel数据转换为数组对象格式后,我意识到当我在读取文件的过程中代码已经执行完成,我的数据没有发挥它应有的作用,想了一会儿,尝试了Promise。

echart emphasis 属性_数组_02

关于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,终止程序。

echart emphasis 属性_数组_03

echart emphasis 属性_数据_04