微信小程序> 小程序异步登录解决方案

小程序异步登录解决方案

浏览量:3176 时间: 来源:WANG_CA
wx.login()

小程序上面获取openid必须通过前端wx.login()方法来获取code,后台通过前端传递过来的code向微信请求以获取openid、session_key等关键信息,后端也可以通过code来进行用户登录业务开发,

wx.login()异步请求

在平常的登录开发中,一般都是把登录封装到app.js中的onLaunch中(登录开发方式不唯一),用户每次冷打开都会进行用户登录,在登录之后我们也会进行一些业务的开发和数据请求,如果按照事件执行顺序,小程序在初始化时触发app.js里的onLaunch方法之后,才应该执行Pages文件下的onLoad方法,但是wx.login()获取code请求的时候是异步数据请求,所以在请求wx.login()方法还未结束的时候,Pages文件下的onLoad就已经执行了,这个异步所带来的后果就是第一次数据请求,Pages文件下的onLoad下面的执行速度会一直大于app.js里的onLaunch执行速度。

暂行解决办法

既然已经知道执行的先后顺序是因为异步请求的结果,那么可以通过ES6中提供的Promise方法来进行处理,听过回调函数来进行其他页面的请求。
code
目录为根目录下的-app.js

  userLogin:function(){    let that = this;    let promise = new Promise((resolve, reject)={      wx.login({        success: function (res) {          wx.request({            url: '服务器地址',            dataType: "json",            data: '要传递的参数code',            method: method,            header: {'Content-Type': 'application/x-www-form-urlencoded'},            success: function (res) {              resolve(res);            },          })        },        fail(error) {          reject(error)        }      })    })    return promise;  },

pagesindex.jsonLoad

const app = getApp()app.userLogin().then((res)={    //数据请求成功之后的操作    //可以请求其他的数据了},(error)={    console.log('数据请求失败:'+error)})

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎