收藏
回答

关于wx.login()执行比较慢怎么办

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 需求 wx.login onLoad 客户端 v1.02.1803210 1.7.4

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

通过点击别人分享的小程序页面,进入到页面的时候,根据需求需要通过缓存获取用户sk(sk是app.js里调用登录,用户授权后,请求后台返回的数据,我把它用wx.setStorage缓存起来),但是wx.login授权之后才能缓存sk,导致函数执行的时候获取不到缓存的sk

- 希望提供的能力


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

3 个回答

  • Special
    Special
    2018-03-27

    wx.login 本身确实是个异步过程,也受用户终端网络环境影响,确实没有什么好办法

    2018-03-27
    赞同
    回复
  • 璋卿
    璋卿
    2018-03-28

    写个延时递归。类似这样

    var testI = 0;
    loginConfirmFunc();
    function loginConfirmFunc () {
      if (testI > 9) {
        wx.showToast({
          title: '请求超时',
          icon: 'loading',
        })
        testI = null;
      } else {
        var loginState = app.globalData.loginState;//这里自己实现下,应该是获取缓存的比较懒就酱。。
        if (loginState == true) {
     
          //在这写你要执行的方法...
     
          testI = null;
        } else {
          console.log('递归执行');
          //延时递归
          setTimeout(function () {
            testI++;
            loginConfirmFunc();
          }, 333)
        }
      }
    }

    我目前基本都这么写,其实可以用es6的promise,但是我一直引用失败所以放弃了QAQ,溜了溜了,老板要来打人了

    2018-03-28
    赞同
    回复
  • 李魁雄
    李魁雄
    2018-03-28

    嗯嗯 不错哦

    2018-03-28
    赞同
    回复