罗盘关掉再打开,出现两个线程问题
发布于 5 年前 作者 lixue 19071 次浏览 来自 问答

先调用罗盘 startCompass

监听罗盘 onCompassChange

停止监听罗盘 stopCompass

再调用罗盘 startCompass

监听罗盘 onCompassChange

此时监听的内容会直行两次,重复这个过程,监听内的代码会每次多执行一次,这个问题应该怎么处理

2 回复

onCompassChange 的方法每调用一次会注册一个监听方法。

关注下,我在wx.onCompassChange里面计数,发现基本每隔1s会返回10次左右的数据,和每隔1s返回5次没对应。

这样会导致我频繁的setData,基本上没多久,真机上演示就卡主了,我在每隔5s去获取用户的定位就没办法同步了

我现在调整成1s返回一次定位,监控发现基本每隔1s,计数都在10次以上

我做了如下调整:

写了个定时器

setInterval(()=>{

this.counter++;

},200);

在罗盘兼听中做了如下判断

wx.onCompassChange(res=>{

if(this.counter % 5===0){

//每隔1s才处理罗盘数据

在这里打印了this.counter发现还是重复执行了多次,,

}

})

请问:我要怎么控制到1s指处理一次罗盘数据??

回到顶部