[求助] 小程序里怎么把获取 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”
阅读 1.9k
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)
})
推荐问题