收藏
回答

求onload两次请求解决办法

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 wx.getLocation 工具 6.7 2.2.3

- 需求的场景描述(希望解决的问题)

  小程序需求一个定位然后使用了wx.getLocation  但是现在发现这样一个问题:

当向用户申请定位授权时 手机没有开通定位权限 所以我使用这个按钮申请用户授权  
当用户授权或者没有授权只能从左上角返回 如图返回后执行onshow()  所以我在onshow中写  导致了onloan的执行两次  (定位需要第一时间执行)  

- 希望提供的能力

有没有什么办法让onload执行一次

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

4 个回答

  • 叔
    2018-12-07

    你可以把获取地理位置的函数封装成一个自己的函数,分别在onLoad和onShow里面调用,为什么要调用onLoad呢...

    2018-12-07
    赞同
    回复
  • 黎😄
    黎😄
    2018-12-05

    onLoad确定只执行一次。但是你在onShow里面有调用了this.onLoad,导致了onLoad执行了两次好不,你把那个获取地理位置的代码放onShow不行吗

    2018-12-05
    赞同
    回复 1
    • Karenins
      Karenins
      2018-12-05

      我将获取定位函数放在onload里 定位没有权限显示mask去申请用户授权 放在onshow里不会第一时间获取定位信息

      你的意思是我需要在onshow写一遍onload同样代码吗?

      2018-12-05
      回复
  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    2018-12-05

    如果用户允许 或者 拒绝后 你可以使用  这是是否获得了允许保存图片的,你尝试下是否允许授权地址的 就好了


    2018-12-05
    赞同
    回复 5
    • Karenins
      Karenins
      2018-12-05

      这个我试了  判断成功与否  依然需要调用onload方法   以为之前用户禁用了定位授权功能

      2018-12-05
      回复
    • 仙森ღ₅₂₀¹³¹⁴
      仙森ღ₅₂₀¹³¹⁴
      2018-12-05回复Karenins

      不用的 我们 这边 这样操作后 用户点击去设置后 如果取消 或者返回 再点击 都会正常进行下一步操作

      2018-12-05
      回复
    • Karenins
      Karenins
      2018-12-05回复仙森ღ₅₂₀¹³¹⁴

      我定位函数放在onload里  如果定位没有权限会触发

      wx.getLocation  fail方法  我在fail方法里显示mask去申请用户授权 


      请问我应该把这个判断写在onshow里吗


      2018-12-05
      回复
    • 痛快科技
      痛快科技
      2018-12-05回复Karenins

              你去打开授权设置页面的时候,不是触发的open-type=‘opensetting’按钮吗,这个按钮有个回调函数,在这个回调函数里面判断一下用户是否打开了授权,若打开了再调用一下wx.getLocation接口获取数据就可以了。

       

      2018-12-05
      回复
    • Karenins
      Karenins
      2018-12-06回复痛快科技

      OK 谢谢啦  虽然没找到回调函数  但是有了一个新思路

      2018-12-06
      回复
  • ==
    ==
    2018-12-05

    是加上页面加载onload一共两次,还是进入onshow之后调用this.onload执行了两次

    2018-12-05
    赞同
    回复 2
    • Karenins
      Karenins
      2018-12-05

      加上onshow  2次   onload一次  返回调用onshow一次

      2018-12-05
      回复
    • ==
      ==
      2018-12-05回复Karenins

      那肯定啊,,第一次是页面生命周期必须的,,第二次你调用的onload

      2018-12-05
      回复