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

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 备注付费咨询

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

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容