5***@qq.com
5***@qq.com
  • 发布:2020-02-21 05:34
  • 更新:2022-03-14 21:06
  • 阅读:7055

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 负责人:无 分享
已邀请:
hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

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

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

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

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

  • t***@163.com

    我每个页面都需要用到onlaunch里请求返回的数据,看了你的demo,每个页面都得加一句await this.$onLaunched;感觉有点繁琐呀,希望官方出一个支持同步的解决方案

    2020-07-28 16:35

1208net

1208net

nvue不支持全局挂载,怎么搞?

  • Unlimited_S

    可以通过getApp()添加一个callback函数去处理异步回调问题

    2020-08-28 13:50

鹅鹅鹅鹅

鹅鹅鹅鹅

在app.js去获取所有全局数据,包括token,用户信息等,在业务页面直接使用onLoadLogin,一个钩子就搞定,看下这篇文章,https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013

紫色风铃

紫色风铃 - 这家伙很懒,什么也没写!

楼主最后怎么解决的

hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

该问题目前已经被锁定, 无法添加新回复