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,
})
},
})
},
我大概解释一下代码:
遇到的问题:获取到openid后,在success回调中应当先执行Util.userExit(userOpenId)
方法判断用户在数据库中是否存在,然后执行Util.pullMessageInfo
/Util.addUser
。最后执行_this.setData
。
但是现在的情况时,加上await和不加没什么区别,方法的执行是乱的。
怎么才能让上述异步方法转同步呢,等待异步方法执行完毕呢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
userExit
是返回值promise么?函数贴一下