关于setTimeout用法问题

有些疑惑,网上关于setTimeout用法和我真实的用法有些不同,我小结一下

用法源于https://www.runoob.com/jsref/met-win-settimeout.html

这是我在做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里直接用函数名,不需要加括号
在这里插入图片描述

此处引用https://blog.csdn.net/lihchweb/article/details/94635720

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值