【微信小程序】wx.login 和 wx.getUserProfile 同时使用问题

场景

在使用微信登录时,通常会在调用 wx.login 获取 code 后再通过 wx.getUserProfile 获取 ivencryptedData (加密数据)一起发到后端进行登录验证;

但是,在实际使用中如果在 wx.login 方法调用后再调用 wx.getUserProfile 会报错;

官方解释

在这里插入图片描述
也就是说,不能在调用方法的回调中使用 wx.getUserProfule()

解决方法

使用Promise.all()方法实现平级调用;

Promise.all() 方法接收一个 promiseiterable 类型(注:ArrayMapSet 都属于ES6 的 iterable 类型)的输入,并且只返回一个 Promise 实例, 那个输入的所有promiseresolve 回调的结果是一个数组。这个 Promiseresolve 回调执行是在所有输入的 promiseresolve 回调都结束,或者输入的 iterable 里没有 promise 了的时候。它的 reject 回调执行是,只要任何一个输入的 promisereject 回调执行或者输入不合法的 promise 就会立即抛出错误,并且 reject 的是第一个抛出的错误信息。

简单点说就是会等到两个方法都回调成功该方法才会返回来值,返回值是一个数组。

代码

封装 wx.loginwx.getUserProfile 两个接口:

/**
 * 使用promise封装用户信息接口
 */
getUserInfo:function(){
   
   
  return new Promise((resolve,reject) => {
   
   
    wx.getUserProfile({
   
   
      desc: '用户登录', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
   
   
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值