我在js文件中开了个定时器,每1s从后端获取数据并解析,然后用异步方法就渲染不出来,改成同步就可以了。
这个解决方法来自于这篇文章,我出的问题和他一样:关于ajax中readyState的值一直为1的问题
这里将ajax参数修改为false即可:

xmlhttp.open("GET","http://www.test.com/getData.php?q=",false);

但是还有个问题,更改数据后还需要更新echarts组件的配置,否则页面不会动态刷新,还是静态的。
根据mychart组件使用的三部曲:

  1. 实例化对象
  2. 指定配置项和数据
  3. 把配置项给实例对象
    我们在第一次setOption之后开一个定时器,在内部更新数据,然后对于option的需要更新的参数重新赋值,然后再次调用setoption,这样数据发生改变后,我们的组件也会动态刷新了。
// 3. 把配置项给实例对象myChart.setOption(option);setInterval(function() {// 读取数据库文件,更新配置var obj= Myupdate();if (obj != null) {option.xAxis.data = obj.mytype;option.series.data = obj.mydata;myChart.setOption(option,true);}}, 500);

这里执行号Myupdate()函数之后,obj的mytype和mydata的值都是正确的,但是在网页端debug发现,赋值之后查看option的xAxis的data还是没有被赋值,经过翻阅相关博客,以及再次查看网页端代码发现是这个问题:

封装好的数组应该赋给:

option.xAxis[0].data = obj.mytype;
option.series[0].data = obj.mydata;


因为这两个配置都是数组…绝了

update函数内容如下:

function Myupdate() {var xmlhttp=new XMLHttpRequest();var mytype = new Array();var mydata = new Array();xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState == 4 && xmlhttp.status == 200){var txt = xmlhttp.responseText;// 解析for (var i = 0; i < txt.length; i++) {if (txt[i] == '#') {var m_type = "";while(i + 1 < txt.length && txt[i+1] != '$') {i++;m_type += txt[i];} mytype.push(m_type);} else if (txt[i] == '$') {var m_data = "";while(i + 1 < txt.length && txt[i+1] != '@') {i++;m_data += txt[i];} mydata.push(Number(m_data));} else {i++;}} // QualityIndexType = mytype;// QualityIndexData = mydata;}}xmlhttp.open("GET","http://www.test.com/getData.php?q=",false);xmlhttp.send();return {mytype,mydata};
}

开个定时器给echarts组件配置定时更新相关推荐

  1. java对日开发中常用词汇(一) / java対日ソフトウェア开発中よく使える単語 (不定时更新)

    日语 (英语对照) 中文含义 バックエンド(backend) 后端,后台 フロントエンド(frontend) 前端,前台 プロセス(process) 运行,执行,处理 プログラム(program) 项 ...

  2. Apache2获取免费https证书并定时更新

    Apache2获取https证书并定时更新 一.获取Let's Encrypt证书 准备工作 获取证书 二.配置证书 前置条件 证书路径配置 开启重写模块(看个人需要) 配置https强制跳转(看个人 ...

  3. VSCODE+Arduino生态快速入门ESP32(一)——点个呼吸灯、开个定时器

    VSCODE+Arduino生态快速入门ESP32(一)--点个呼吸灯.开个定时器 我手里这块是ESP32WROOM开发板,20多块钱,性价比非常高. 1.环境搭建 环境搭建就不在此赘述,CSDN上的 ...

  4. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

  5. 单片机中断程序实例_单片机定时器中断实现长时间定时程序

    单片机定时器中断实现长时间定时程序 #include // 包含51单片机寄存器定义的头文件 sbit D1=P2^0; //将D1位定义为P2.0引脚 unsigned char Countor; ...

  6. C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。

    /***************************************************** *任务要求 *1.时钟12MHz,使用定时器T1的方式1定时20mS: *2.对20mS计 ...

  7. 十七、.net core(.NET 6)搭建基于Quartz组件的定时调度任务

     搭建基于Quartz组件的定时调度任务 先在package包项目下,添加Quartz定时器组件: 新建类库项目Wsk.Core.QuartzNet,并且引用包类库项目.然后新建一个中间调度类,叫Qu ...

  8. NXP JN5169使用定时器进行PWM输出和定时功能

    NXP JN5169使用定时器进行PWM输出和定时功能 一.定时器介绍 1.定时器介绍 2.定时器可操作的模式 3.定时器DIO 4.定时器和PWM模式 5.定时器中断 二.实现代码 1.PWM输出 ...

  9. 阿里云大数据组件零碎点总结(不定时更新)

    阿里云组件的更新频率很快,存在部分内容描述与现版本不一致的情况,最新版本特性请参考阿里云官方文档. 阿里云官方帮助文档链接:https://help.aliyun.com/ 阿里云各组件简介:http ...

最新文章

  1. 重新分区_完全不需要装软件!教你轻松调整硬盘分区
  2. sts从mysql数据库中反向生成实体类
  3. 现金流量表的编制公式
  4. python3 爬虫例子_如何让你写的爬虫速度像坐火箭一样快【并发请求】
  5. 什么是光纤收发器?光纤收发器作用是什么?
  6. mongodb最详细的安装与配置
  7. 时间戳 java_java中获取时间戳的方法
  8. 数组的几个重要方法以及如何清空数组
  9. 小米回应“海量备货致亏损”;美团饿了么“偷听”?苹果发布新 iPad | 极客头条...
  10. 九度OJ 1340:小A的计算器 (进制转换)
  11. java int 原子_java中的原子操作类AtomicInteger及其实现原理
  12. [NOI2006]神奇口袋
  13. 清华大学计算机学院教授简介,清华大学计算机科学与技术系导师教师师资介绍简介-王继龙...
  14. 【标准正态分布查询表】
  15. 101个最佳配色方案,设计师值得收藏!
  16. apache ActiveMQ反序列化漏洞(CVE-2015-5254)复现
  17. 软考(软件设计师)中的一些总结
  18. 解决HC05蓝牙模块主从配对失败及AT模式设置方案
  19. 低蓝光认证:TUV莱茵与TUV南德 有啥区别?
  20. 高德地图-添加一个或多个覆盖物

热门文章

  1. eureka 集群失败的原因_eureka集群中的疑问?
  2. 【Java从入门到天黑|05】JavaSE入门之面向对象(下)
  3. cpu序列号唯一吗_怎么看电脑硬件是不是新的 有什么软件能检测吗?
  4. npm install --save
  5. 微信内置浏览器点击“返回”关闭窗口
  6. webview部分安卓机中文乱码
  7. JS中的数据类型转换
  8. HashSet源码分析:JDK源码系列
  9. html中padding和margin的区别和用法与存在的bug消除
  10. Linux下查看某个进程的网络带宽占用情况