有些疑惑,网上关于setTimeout用法和我真实的用法有些不同,我小结一下
这是我在做echarts异步加载数据时遇到的问题——数据获取时间不一样。
当时做一个项目需要ajax获取数据库数据,一共有两个ajax,一个瞬间完成,但另外一个需要5-6s才完成,原因是数据量大,我需要用sql中的sum求和数据。因此验收那边需要我弄加载动画,让两边看起来更为协调
先附上正确代码以及效果(如下),数据是获取了,但强行加了个加载动画,myChart是我绑定div的变量
myChart.setOption(option);//设置动画
setTimeout(function(){myChart.hideLoading();},3000);//设置时间
之所以会懵逼一天,是因为我先看其他博客如何使用这个setTimeout,却没看函数官方使用文档
一开始是看这个博客的 https://blog.csdn.net/qq_28256783/article/details/80097092
这篇文章中先写到如下调用方法,是可以正常运行的。但是将alert函数改成我自己的函数,会报如下错误,变量未定义
<html>
<body bgcolor=lightcyan text=red>
<h1>
<font color=blue>示范网页</font>
</h1>
<p>
</br>
<p> 请等三秒!
<script>
setTimeout("alert('对不起, 要你久候')", 3000 )
</script>
</body>
</html>
setTimeout("myChart.hideLoading()",3000);
我尝试改成没有双引号,运行没有报错,但没有定时效果,而是直接执行hideLoading()函数
setTimeout(myChart.hideLoading(),3000);
最终通过看官方使用文档,发现需要加上function({}),运行成功。
我的理解是setTimeout里的函数如果含有变量或对象的,需要function({})
补充一下,另外一位博主写的。setTimeout里直接用函数名,不需要加括号