js异步同步问题

新手上路,请多包涵

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

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

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

阅读 1.9k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题