下面这段代码,经过实际验证是正确的,用于发送验证码等待60秒用的,
只不过它的原理不懂,当执行promise的时候,程序执行了setInterval,每秒执行一次函数,但是promise的回调then里已经写了停止计时器,照理不可能59,58,57的执行下去啊,为什么还能正确执行?
`
timer: function () {
var that = this
let promise = new Promise((resolve, reject) => {
let setTimer = setInterval(
() => {
that.setData({
second: that.data.second - 1,
btntitle:that.data.second+'s',
disabled:true
})
if (that.data.second <= 0) {
that.setData({
disabled:false,
btntitle:'发送验证码',
second:60
})
resolve(setTimer)
}
}
, 1000)
})
promise.then((setTimer) => {
clearInterval(setTimer)
})
}
`
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…