568829266@qq.com
568829266@qq.com
  • 发布:2020-02-21 05:34
  • 更新:2020-02-21 09:42
  • 阅读:1265

uni-app中onLaunch中的异步回调问题

分类:uni-app

如题,我在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执行完再执行

2020-02-21 05:34 负责人:无 分享
已邀请:
1606726660@qq.com

1606726660@qq.com

很简单 你可以有多重解决方案

1.使用路由插件 uni-simple-router 可以拦截页面进入之前 并强化了onlaunch异步的问题

2.使用promise暂时解决 我上传一个demo

3.加群获取更多的插件接分分解决问题那种 769241495

要回复问题请先登录注册