在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
参考:https://blog.csdn.net/txqd1989/article/details/79096415
本文采用第二种方法,使用异步Promise来解决页面加载完成后却拿不到storage中的内容,页面加载在登录前
本文讲的是登录获取不到数据的问题及登录步骤
1.在app.js创建方法 getLogin() { // 查看是否有登录isLogin字段 const isLogin = wx.getStorageSync('isLogin') // 如果本地没有存储,表示没有登录,没有登录就要请求,否则不请求 if(!isLogin ) { // 登录 return new Promise(function (resolve, reject) { wx.login({ success: res => { console.log(res.code, '返回') uriFun.loginFun(res,resolve) // 这个是我封装的登录 // 发送 res.code 到后台换取 openId, sessionKey, unionId } }) }) } else { return new Promise(function (resolve, reject) { resolve() }) } },
我封装的登录 // 登录 function loginFun(res,resovle) { request.getData("user/loginByCode?code=" + res.code, backres => { console.log(backres, '获取到了吗') if(backres.status == "success") { wx.setStorage({ key: 'loginToken', data: backres.data.token }); wx.setStorage({ data: backres.data, key: 'userinfo', }); wx.setStorage({ data: 'true', key: 'isLogin', }) resovle() // 这里调用,表示登陆成功后再执行回调内容,即首页index。js中的函数 } }, fail => { console.log(fail, '失败了吗') } ) }
2.将以上登录的方法在onLaunch中调用 onLaunch() { this.getLogin() },
3.在首页的index.js中 onLoad() { var that = this getApp().getLogin().then(()=>{ // 意思是先登录后再加载,即onLaunch 先于onload加载 getAddress.getAddress(that); }) },
说明:第3步中的then里面的回调函数是Promise中 的resolve, resolve() 表示调用then里面的回调函数
|
请发表评论