关于wx.login()执行比较慢怎么办
发布于 5 年前 作者 ping31 4083 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

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

  • 希望提供的能力
3 回复

写个延时递归。类似这样

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,溜了溜了,老板要来打人了

嗯嗯 不错哦____

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

回到顶部