收藏
回答

罗盘关掉再打开,出现两个线程问题

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 Bug stopCompass 客户端 iOS 6.6.6 2.0.6

先调用罗盘 startCompass

监听罗盘 onCompassChange

停止监听罗盘 stopCompass

再调用罗盘 startCompass

监听罗盘 onCompassChange

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

最后一次编辑于  2018-05-15  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • HS
    HS
    2018-05-15

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

    2018-05-15
    赞同
    回复 2
    • 嘿,我的倔脾气
      嘿,我的倔脾气
      2018-05-15
      我们使用的过程中有个问题,就是在同一个页面,不同的数据传入之后展现不同的效果,现在遇到问题,就是用户进入第一次,展现正常,用户换了一个数据进入,罗盘监听出现两次,第一次和第二次的数据都会展现出来,有没有什么方法关掉监听或者清除掉第一次的数据缓存。
      2018-05-15
      回复
    • HS
      HS
      2018-05-15回复嘿,我的倔脾气
      可以在 oncampasschange 注册的方法里加入条件判断。
      2018-05-15
      回复
  • 棉花糖
    棉花糖
    2018-07-02

    关注下,我在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指处理一次罗盘数据??



    2018-07-02
    赞同
    回复