微信小程序:调用云函数后,在函数中赋值完的变量在函数结束后打印就变成了undefined

调用云函数后,在函数中赋值完的变量在函数结束后打印就变成了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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值