[求助] 小程序里怎么把获取 openid,给封装起来调用

怎么把如下的获取 openid,给封装起来调用

wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: 'https://test.com/onLogin',
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

尝试这样来写

//base.js

getOpenid(){
        wx.login({
            success (res) {
                if (res.code) {
                    //发起网络请求
                    let postData = {
                        code: res.code
                    }
                    this.$post("https://test.com/onLogin",postData).then(res => {
                            return res.results.openid
                    })
                }
            }
        })
        
    },
    
//调用的时候
this.$base.getOpenid()
console.log 后
出来的“undefined”
阅读 181
评论 3月27日提问
    1 个回答

    采用promise包裹一下getOpenid方法

    getOpenid(){
        return new Promise((resolve, reject) => {
            wx.login({
                success () {
                    let postData = {
                        code: res.code
                    }
                    this.$post().then(res => {
                        // 返回请求道德openid
                        resolve(res.results.openid)
                    }).catch(err => {
                        // 抛出请求错误
                        reject(err)
                    })
                },
                fail () {
                    // 抛出api调用错误
                    reject(err)
                }
            })
        })
    }

    使用方式如下:

    getOpenid().then(openid => {
        console.log(openid)
    }).catch(err => {
        console.error(err)
    })
    评论 赞赏
      撰写回答

      登录后参与交流、获取后续更新提醒