优化代码wx.cloud.callFunction({ name: 'login', data: {}, success: res => { console.log('[云函数] [login] user openid: ', res.result.openid) this.globalData.openid = res.result.openid }, fail: err => { console.error('[云函数] [login] 调用失败', err) } })
时间: 2024-02-14 08:17:02 浏览: 33
可以将这段代码进一步优化,使用 async/await 语法简化回调函数的嵌套,使代码更加清晰易读。修改后的代码如下:
```
try {
const res = await wx.cloud.callFunction({ name: 'login', data: {} })
console.log('[云函数] [login] user openid: ', res.result.openid)
this.globalData.openid = res.result.openid
} catch (err) {
console.error('[云函数] [login] 调用失败', err)
}
```
这里使用了 try/catch 语句来捕获异步调用产生的错误,并使用 await 关键字等待异步调用的结果。这样,在调用 cloud function 的过程中出现错误时,会直接跳转到 catch 代码块,方便我们处理错误。同时,也减少了回调函数的嵌套,使代码更加清晰易读。
相关问题
代码错误//app.j App({ globalData:{ user:{}, }, onLaunch: function () { if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力') } else { wx.cloud.init({ // env 参数说明: // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 // 如不填则使用默认环境(第一个创建的环境) env: 'cloud1-2gx2lyqna1e2c7de', traceUser: true, }) wx.cloud.callFunction({ name: 'login', data: {}, success: res => { console.log('[云函数] [login] user openid: ', res.result.openid) this.globalData.openid = res.result.openid }, fail: err => { console.error('[云函数] [login] 调用失败', err) } }) } this.globalData = { openid:'', } }, })
这段代码中的问题是,`globalData` 对象中的 `openid` 属性被定义在了 `onLaunch` 函数中,导致在其他地方无法访问到该属性。正确的做法是将 `openid` 属性定义在 `globalData` 对象中,而不是在 `onLaunch` 函数中,例如:
```
App({
globalData: {
openid: '',
user: {}
},
onLaunch: function () {
if (!wx.cloud) {
console.error('请使用 2.2.3 或以上的基础库以使用云能力')
} else {
wx.cloud.init({
env: 'cloud1-2gx2lyqna1e2c7de',
traceUser: true,
})
wx.cloud.callFunction({
name: 'login',
data: {},
success: res => {
console.log('[云函数] [login] user openid: ', res.result.openid)
this.globalData.openid = res.result.openid
},
fail: err => {
console.error('[云函数] [login] 调用失败', err)
}
})
}
}
})
```
这样,其他地方就可以通过 `getApp().globalData.openid` 来访问到 `openid` 属性了。
onGetOpenid: function (e) { let that=this wx.getUserInfo({ success: res => { this.setData({ avatarUrl: res.userInfo.avatarUrl, userInfo: res.userInfo }) wx.setStorage({ key: "Userinfo", data: this.data.userInfo }) // 调用云函数 wx.cloud.callFunction({ name: 'login', data: {}, success: res => { console.log('[云函数] [login] user openid: ', res.result.openid) app.globalData.openid = res.result.openid wx.setStorageSync("myOpenId", res.result.openid); const db = wx.cloud.database({ env: 'gdouerhome-8gtde3z00e0425c7' }) return db.collection('Assistant_User').add({ //添加人 data: { Username: that.data.userInfo.nickName, Last_to_Reply: Date.now(), Last_toup_Time: Date.now(), User_head_url: that.data.userInfo.avatarUrl, Creat_user_Time: Date.now() } }).then(res => { console.log(res); wx.switchTab({ url: '../Main_page/Main_page', }) }) }, fail: err => { console.error('[云函数] [login] 调用失败', err) wx.showToast({ title: '云函数:调用失败', icon: 'none', duration: 1500 })
这是一段小程序代码,实现的功能是获取用户的个人信息和 openid,调用云函数并将用户信息存储到云数据库中。其中,使用了 wx.getUserInfo 方法获取用户信息,通过 wx.cloud.callFunction 方法调用云函数获取 openid,最后使用 wx.cloud.database 方法将用户信息存储到云数据库中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)