问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微信小程序中settimeout什么意思

发布网友 发布时间:2022-04-22 03:37

我来回答

3个回答

懂视网 时间:2022-04-26 17:50

背景

实验室需要将项目的app搬到微信的小程序上,终于知道为什么程序员是手艺人了,只要有需求,就要想方设法去填充这种需求,去年是小程序的元年了可以说,去年冬天一个叫跳一跳的小程序游戏出现在我的微信中,当时就觉得腾讯是真的牛皮。一时间很多的软件小程序版相继出现,各大微信公众号也开始关联小程序。小程序相比于app,有着独特的优势,其中最大的就是没有ios和android平台之分,但是同时也有局限,你给我开发个小程序王者荣耀试试。

定时任务

微信小程序API中有两种定时任务

  • setInterval
  • setTimeOut
  • 这两者都能实现定时任务,比如实现一个定时器,但是建议采用后者setTimeOut,理由是前者并不精确。详细请参考

    https://www.zhihu.com/question/20479535

    setTimeOut用法

    不多说直接上:

    var timerName = setTimeOut(function() {
    	//循环代码
    }, delay)

    这里在循环代码处做我们需要循环处理的逻辑,delay是延迟的毫秒数,5秒 = 5 * 1000,timerName是返回的定时器名称,有什么用,因为要取消这个定时器就需要给需要给出取消的定时器名称

    clearTimeOut(timerName)


    我有一个需求是每五秒获取一次位置

    startReportHeart() {
     var timerTem = setTimeout(function () {
     that.heartReport();
     }, app.globalConfig.heart_delay)
     // 保存定时器name
     that.setData({
     timer: timerTem
     })
     },

    heartReport()就是获取位置信息,这样的效果是,只执行了一次。然后查看了一通资料,发现这个setTimeOut只是在delay毫秒之后执行代码,嗦嘎。

    那如何才能循环执行呢?——>递归登场

    好吧,我的递归就是(错误代码)

    startReportHeart() {
     var timerTem = setTimeout(function () {
     that.heartReport();
     }, app.globalConfig.heart_delay)
     // 保存定时器name
     that.setData({
     timer: timerTem
     })
     })
     that.startReportHeart()
     },

    好像没有毛病啊,自递归调用,嗯,没毛病,但是,,,,情况就是,瞬间出现了堆栈溢出。哈哈哈哈哈哈哈。。。。。。。
    分析:

    我在startReportHeart函数中开启了一个timer,5秒后开始执行,heartReport获取位置信息,此时直接递归调用自己,再开启一个timer,我的天,这么愚蠢的代码,是谁写的,没错就是我。手动捂脸。

    在知道了原因之后,那么如何才能解决呢?我们需要5秒后在一次执行,对就是这个需求,那么自然就是在timer中调用自身啊。笨蛋。

    正确代码:

    startReportHeart() {
     var timerTem = setTimeout(function () {
     that.heartReport();
     that.startReportHeart()
     }, app.globalConfig.heart_delay)
     // 保存定时器name
     that.setData({
     timer: timerTem
     })
     },

    就这样完美。

    总结

    有的时候,遇到的坑真的很想打自己一巴掌,但是解决坑的过程,并发现自己的愚蠢却是一件非常开心的事呢。这个过程也是十分的funning呢。

    小程序开发刚开始一周时间,是的,一周上手,一点一点,现在越来越顺手,虽然写的东西比较low,但是再一次印证了那句话,只有实践才是最好的学习方式。不要找什么从入门到精通,你会发现,这些都会让你从入门到放弃。

    ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值

    热心网友 时间:2022-04-26 14:58

    和浏览器中的一样,表示延时执行,第一个参数是执行体,第二个参数是延时时间,单位毫秒

    热心网友 时间:2022-04-26 16:16

    按字面应该是设置退出时间,不一定对,仅供参考😁
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    信息系统集成资质几级最高 计算机信息系统集成企业资质等级评定条件计算机信息系统集成企业资质等 ... 计算机信息系统集成企业资质等级评定条件实施细则一级资质 win10电脑密码错误win10开机密码错误 windows怎么更换密码错误 电脑没设置密码老是显示密码不正确电脑密码一直显示输入不正确 我把苹果手机系统 。 一更新 。 卡着了 。 然后就这样了 。 这出现... 我iphone想更新到9,是直接在手机按的更新,但是中途变成了这样 为什么有时早上4点多觉胸一下感觉很累的像给人吓一跳似 睡觉醒来时觉得胸部难受有点累是怎么回事 文玩核桃表面上的白粉怎么去掉 微信小程序 拖拽有延迟怎么解决? 文玩核桃到底怎么刷才对 微信小程序,延时执行js函数的问题 文玩核桃链怎么清理杂物 如何清洗文玩核桃?? e1101-1无信号怎么解决+广电网络 怎么能让自己的文玩核桃干净漂亮 广电网络电视显示未插信号线或信号异常? h i g h er是什么意思? 已I 口H 韩语什么意思 iy h u i n ,h, 贵州广电网络电视无信号怎么办 欧美经典科幻电影有哪些 字母H、I、J、K、L、M、N大小写各像什么 有没有想大话西游之月光宝盒这样的穿越时空的科幻... 女生用I@H做网名是什么意思? 玉米面怎么蒸馒头 请问工程安装管线中的H、I、J、K、L符号代表什么意... 口碑最好的科幻片有那几部? 百度网盘是以前的手机号,现在停机了,想换成现在... 广电有线电视信号不好? 文玩核桃怎么保养? 承包饭堂需要具备什么资质? 核桃生虫了怎么处理?新核桃如何防虫? 微信小程序云开发关于数据库读取延迟问题的解决 请问我的百度网盘账号关联手机停机不用了,但是登... 微信小程序button点击事件IOS没有延迟安卓的有延迟... 食堂承包合同谁有吗? 数字电视突然播放不了,显示无信号是怎么回事?怎... 食用油壶能不能存粮食 微信小程序如何每隔10ms就触发一个事件? 请问大家有什么好的方法能洗净5L食用油桶的里面(... 医院食堂承包合同 微信小程序应用打开很慢怎么办 食用油桶用完油海有其它用处吗 百度网盘手机号没用了,收不到验证码怎么办,里面... 电视无信号拨打96766不与理会该怎么办? 广电机顶盒没信号电视黑屏 机油桶是干净的有机油味,装了几天的米,米有机油...