【求助】vue 如何把网络请求,把异步改成同步呢?
是uni-app制作微信小程序,遇到网络请求异步、同步的问题?
1、使用默认的uni.request请求
uni.login({
provider: 'weixin',
success: function (loginRes) {
let code = loginRes.code
uni.request({
url: apiurl+"/oauth/oauth",
data: {code:code},
method:'POST',
success: (res) => {
console.log(res.data);
if (res.data.status == 1) {
var results=res.data.results
console.log("==============================")
$vm.$store.commit('setSessionkey',results.sessionkey)
console.log("sessionkey1:"+$vm.sessionkey)
}
}
})
console.log("sessionkey2:"+$vm.sessionkey)
}
})
如下图,sessionkey2为空
2、根据百度搜索后,尝试对uni.request请求进行封装
//封装uni.request
export async function post_request(url, obj) {
//返回一个promise实例。
return await new Promise((resolve, reject) => {
uni.request({
url: apiurl+url,
data: obj,
method:'POST',
success: (result) => {
resolve(result.data);
},
fail: (e) => {
reject(e);
}
})
})
}
//请求数据
uni.login({
provider: 'weixin',
success: function (loginRes) {
let code = loginRes.code
post_request("/oauth/oauth",{code:code}).then(res => {
console.log(res)
if (res.status == 1) {
var results=res.results
console.log("==============================")
$vm.$store.commit('setSessionkey',results.sessionkey)
console.log("sessionkey1:"+$vm.sessionkey)
}
})
console.log("sessionkey2:"+$vm.sessionkey)
}
})
如下图,sessionkey2还是为空的
求助,如何才能让sessionkey2正常输出呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
简单例子,使用
Promise
async
await
uni.login({
})
写在下一个then里面
post_request
只需要返回一个Promise实例即可,success
中resolve(result.data)
使用的时候,在 "上级函数"中加上
async
。然后再使用的时候加上let result = await promiseFun()
async await牢记一下,或者axios.all