如题,我在onlaunch中写了一个登陆请求,到后台去取页面的很多公共数据,写到globalData中,然后在子页面加载完成时使用这些数据来进行一些页面的渲染,但是,onlaunch中的请求是异步的,也就是说在执行onlaunch的同时onload也已经开始执行了,这就导致了页面无法拿到onlaunch异步获取的数据,要如何处理才能取到数据呢?下面贴上我的代码
//app.js中
onLaunch: function() {
uni.login({
provider: 'weixin',
success:(loginRes) => {
var code = loginRes.code
uni.request({
url:'https://www.ceshi1.com',
data:{code},
method:'POST',
success:(res)=>{
this.globalData.token = res.data.token
}
})
}
});
},
//index.js中
onLoad() {
var token = getApp().globalData.token
uni.request({
url:'https://www.ceshi1.com/getThings',
data:{token},
method:'POST',
success:(res)=>{
this.globalData.token = res.data.token
}
})
},
如题,也就是微信小程序登录的接口,通过接口拿到token,然后index页面用token去获取页面数据,在这里我再插一嘴题外话,微信小程序中就算onlaunch中的方法写同步的,比如使用async/await,将所有的请求都设置成同步,onload也不会等onlaunch执行完再执行
t***@163.com
我每个页面都需要用到onlaunch里请求返回的数据,看了你的demo,每个页面都得加一句await this.$onLaunched;感觉有点繁琐呀,希望官方出一个支持同步的解决方案
2020-07-28 16:35