需求:每五秒获取一次位置

递归调用,错误代码写法

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

5秒后开始执行,heartReport获取位置信息,此时直接递归调用自己,再开启一个timer,瞬间出现了堆栈溢出

正确递归调用

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注