uniapp的api异步转同步
await new Promise(async r => { 在需要reject的地方 r() })
例如
event:let isOk = await this.methods('submit') //手动登陆 会进行绑定 这里的isOk始终是false 所以用promise
methods:
async submit() {
let isOk = false
await new Promise(async r => {
uni.getProvider({
service: 'oauth',
success(res) {
if (~res.provider.indexOf('weixin')) {
uni.login({
provider: 'weixin',
success(res2) {
// console.log('登录信息',res2) code 登录结果
uni.getUserInfo({
provider: 'weixin',
success(info){//这里请求接口
// console.log('这是用户信息',info)
uni.setStorageSync('userImg',info.userInfo.avatarUrl)
// _this.http({
// cmd:'/common/bindWx',
// input:{code:res2.code,channelType:'WXApplet'},
// success(){
// console.log('绑定成功')
// }
// })
inputSend = JSON.parse(inputSend)
inputSend.code = res2.code
_this.http({
cmd:'common/login',
input:inputSend,
success(res){
if(res.code==='0'){
isOk = true
console.log(5)
console.log(isOk)
//隐藏loading
uni.hideLoading()
uni.setStorageSync('sessionId',res.data.sessionId) // 保存sessionid
Object.keys(res.data).forEach(function(key) {
if (res.data[key] !== null) {
// console.log(res.data[key] )
//存登录返回的信息
uni.setStorageSync(key,res.data[key])
}
})
r()
// await this.http({
// //如果需要额外请求接口可以写在这
// })
}
},
error(res){
uni.showToast({
icon: "none",
title: res.msg,
duration: 3000,
position: 'top'
})
}
})
},
fail: () => {
uni.showToast({title:"微信登录授权失败",icon:"none"});
}
})
},
fail: () => {
uni.showToast({title:"微信登录授权失败",icon:"none"});
}
})
}else{
uni.showToast({title: '请先安装微信或升级版本',icon:"none"});
}
}
});
})
console.log(4)
console.log(isOk)
return isOk
}
这样就避免了uniapp的api异步的效果