Loading... # **关于Taro定时器计时的解决方案** 最近做的一个项目里,遇到个问题搞得我吃不香睡不足, taro中搞得定时做小程序中的计时工资,器死活无法清除, 开屏 黑屏的生命周期都写好什么的,但总会出现无法清除的现象,最终选择了自己用setTimeOut写一个定时器来达到所有东西可控的做法: 首先定时器的方法是使用Taro存储的id实现,那么清除定时器就这样写: ``` const clearTimePlus = async (text?: string) => { console.log(`${text}执行了清除定时器`); Taro.setStorageSync('TimerId',''); }; ``` 而设置定时器的函数是: ``` const setTimeInterval = (fn: Function,second: number,randomNumber: number)=>{ return setTimeout(async ()=>{ const TimerId = Taro.getStorageSync('TimerId'); console.log('TimerId:',TimerId,'randomNumber',randomNumber,+TimerId===randomNumber); if(randomNumber&&TimerId&&+TimerId===randomNumber){ fn(); setTimeInterval(fn,second,randomNumber); }else { return } },second) }; ``` 使用的时候: ``` const startTime = async () => { await clearTimePlus('startTime'); setTimeout(async ()=>{ console.log('已开始计时'); · · · some code const randomNumber = Math.floor(Math.random()*10000); await Taro.setStorageSync('TimerId',randomNumber); await setTimeInterval(() => { · · · some code },20000,randomNumber); },500) }; ``` 最终定时器将会在你执行startTime后清除 最后修改:2023-04-01 © 允許規範轉載 讚賞 讚賞作者 支付宝微信 赞 如果覺得我的文章對你有用,請隨意讚賞
1 條評論
hook就是辣鸡