js异步同步问题

发布于 2022-09-12 02:33:08 字数 1363 浏览 48 评论 0

在微信小程序中遇到了异步转同步的问题,代码如下:

checkUserState(){
      var _this=this;
      wx.cloud.callFunction({
        name: 'getUserOpenInfo',
        success: async res=>{
          var userOpenId=res.result.event.userInfo.openId;
          console.log("已获取到用户信息:"+JSON.stringify(res.result.event.userInfo));
          _this.data.userInfo.openId=userOpenId;
          if(await Util.userExit(userOpenId)){
            _this.data.messageInfo=Util.pullMessageInfo(userOpenId);
          }
          else{
            await Util.addUser(_this.data.userInfo);
          }
          console.log("我是分割线");
          _this.setData({
            userInfo:_this.data.userInfo,
            messageInfo:_this.data.messageInfo,
            pullMessageComplete:true,
          })
        },
      })
    },

我大概解释一下代码:
CleanShot 2020-05-07 at 11.27.56@2x.png

遇到的问题:获取到openid后,在success回调中应当先执行Util.userExit(userOpenId)方法判断用户在数据库中是否存在,然后执行Util.pullMessageInfo/Util.addUser。最后执行_this.setData

但是现在的情况时,加上await和不加没什么区别,方法的执行是乱的。
CleanShot 2020-05-07 at 11.41.02@2x.png

怎么才能让上述异步方法转同步呢,等待异步方法执行完毕呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰火雁神 2022-09-19 02:33:08

userExit 是返回值promise么?函数贴一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文