云函数异步获取OpenID
云函数 getOpenID
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ // 初始化云开发环境
env: cloud.DYNAMIC_CURRENT_ENV // 当前环境的常量
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
// 返回当前用户的身份信息,用于数据库记录和查询
return{
openid: wxContext.OPENID,
}
}
js文件
const db = wx.cloud.database();
async onLoad() {
//获取openid
let openid = await this.getOpenID()
},
//获取用户openid
async getOpenID(obj) {
var that = this
return new Promise(function (resolve) {
wx.cloud.callFunction({
name: 'getOpenID',
success: function (res) {
resolve(res.result.openid)
that.setData({
openid: res.result.openid
})
}
});
});
},
注意:
success方法指向闭包,所以this属于闭包,由此在success回调函数里是不能直接使用this.setData()的,可以在闭包之外先把this赋值给另一个变量。
var that = this