调用云函数后,在函数中赋值完的变量在函数结束后打印就变成了undefined
这是因为,调用云函数之后,只能在success回调函数中操作,在函数外不行。
一开始的解决方法如下面的代码,将获取的信息存入到了缓存中。
wx.cloud.callFunction({
//调用云函数
name: "getsign", //云函数名称 getsign
data: { //传入参数
date: ndate, //传入参数date
openid: ui.openid //传入参数openid
},
success: res => { //调用成功
console.log("res", res) //打印成功后返回的信息
wx.setStorageSync('todaysign', res.result.data)
//将今天的签到信息存到缓存中
},
fail: res => { //调用失败
console.log("res", res) //打印失败信息
}
})
const s =wx.getStorageSync('todaysign') //取出签到信息
后来发现存入缓存中会导致很多问题。首先,会占用缓存空间;其次,在每次重新进入小程序开发者工具时,缓存被清空,往往第一次运行获取的数据并不准确,这会导致后续存入数据库的数据出现错误,继而继续寻找解决方法。
新的解决方法如下:
var tres= await wx.cloud.callFunction({ //调用云函数
name: "getsign", //云函数名称 getsign
data: { //传入参数
date: ndate,
openid: ui.openid
}})
s=tres.result.data