微信小程序—setTimeOut定时器的问题及解决

微信小程序—setTimeOut定时器的问题及解决

2023年7月2日发(作者:)

微信⼩程序—setTimeOut定时器的问题及解决背景实验室需要将项⽬的app搬到微信的⼩程序上,终于知道为什么程序员是⼿艺⼈了,只要有需求,就要想⽅设法去填充这种需求,去年是⼩程序的元年了可以说,去年冬天⼀个叫跳⼀跳的⼩程序游戏出现在我的微信中,当时就觉得腾讯是真的⽜⽪。⼀时间很多的软件⼩程序版相继出现,各⼤微信公众号也开始关联⼩程序。⼩程序相⽐于app,有着独特的优势,其中最⼤的就是没有ios和android平台之分,但是同时也有局限,你给我开发个⼩程序王者荣耀试试。定时任务微信⼩程序API中有两种定时任务setIntervalsetTimeOut这两者都能实现定时任务,⽐如实现⼀个定时器,但是建议采⽤后者setTimeOut,理由是前者并不精确。详细请参考setTimeOut⽤法不多说直接上:var timerName = setTimeOut(function() { //循环代码}, delay)这⾥在循环代码处做我们需要循环处理的逻辑,delay是延迟的毫秒数,5秒 = 5 * 1000,timerName是返回的定时器名称,有什么⽤,因为要取消这个定时器就需要给需要给出取消的定时器名称clearTimeOut(timerName)坑我有⼀个需求是每五秒获取⼀次位置startReportHeart() { var timerTem = setTimeout(function () { eport(); }, _delay) // 保存定时器name a({ timer: timerTem }) },heartReport()就是获取位置信息,这样的效果是,只执⾏了⼀次。然后查看了⼀通资料,发现这个setTimeOut只是在delay毫秒之后执⾏代码,嗦嘎。那如何才能循环执⾏呢?——>递归登场好吧,我的递归就是(错误代码)startReportHeart() { var timerTem = setTimeout(function () { eport(); }, _delay) // 保存定时器name a({ timer: timerTem }) }) eportHeart() },好像没有⽑病啊,⾃递归调⽤,嗯,没⽑病,但是,,,,情况就是,瞬间出现了堆栈溢出。哈哈哈哈哈哈哈。。。。。。。分析:我在startReportHeart函数中开启了⼀个timer,5秒后开始执⾏,heartReport获取位置信息,此时直接递归调⽤⾃⼰,再开启⼀个timer,我的天,这么愚蠢的代码,是谁写的,没错就是我。⼿动捂脸。在知道了原因之后,那么如何才能解决呢?我们需要5秒后在⼀次执⾏,对就是这个需求,那么⾃然就是在timer中调⽤⾃⾝啊。笨蛋。正确代码:startReportHeart() { var timerTem = setTimeout(function () { eport(); eportHeart() }, _delay) // 保存定时器name a({ timer: timerTem }) },就这样完美。总结有的时候,遇到的坑真的很想打⾃⼰⼀巴掌,但是解决坑的过程,并发现⾃⼰的愚蠢却是⼀件⾮常开⼼的事呢。这个过程也是⼗分的funning呢。⼩程序开发刚开始⼀周时间,是的,⼀周上⼿,⼀点⼀点,现在越来越顺⼿,虽然写的东西⽐较low,但是再⼀次印证了那句话,只有实践才是最好的学习⽅式。不要找什么从⼊门到精通,你会发现,这些都会让你从⼊门到放弃。,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688277533a112174.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信