钉钉小程序如何解决页面加载完之后才获取到数据的问题,如何在 onLaunch 获取到后端数据之后再执行 onLoad

我们通常会遇到这样的问题:页面加载完成之后,接口请求的数据才请求回来,此时页面已经渲染完成了,所以,数据请求回来的太晚,就不会被渲染到页面上。

 所以这个问题的另外一种的表示就是:如何在 onLaunch 获取到后端数据之后再执行 onLoad


我们以一个具体的案例来说明这个问题:

当我们进入到一个企业内部的小程序的时候,小程序会获取到登录者在企业中的个人信息,当拿到用户的 token 以后,会将 token 存到本地,然后才会进入到小程序的首页,通过携带 token 去请求首页用到的信息并展示。

所以理想状态是这样的:

1、点击小程序,进入到 app.js 中的 onLaunch 

2、通过钉钉的免登录或者发送 ajax 请求获取到登录者的 token 并存储到本地

3、进入到首页 index.js 中的 onLoad 

4、从本地获取 token ,携带 token 调用首页需要用到的信息进行展示

可残酷的现实是这样的:

1、点击小程序,进入到 app.js 中的 onLaunch 

2、通过钉钉的免登录或者发送 ajax 请求获取到登录者的 token 并存储到本地,可是因为 app.js 加载速度要比 index.js 慢,所以请求一直在发送中.....

3、进入到首页 index.js 中的 onLoad 

4、从本地获取 token (因为请求还在发送中,所以此时本地还没有 token)

5、携带 token 调用首页需要用到的信息进行展示(此时页面已经展示完成了,才刚刚获取到请求回来的 token,请求回来的信息根本就渲染不到页面上)

解决方法:利用回调

app.js 

 index.js

 注意:这里一定要单独写一个方法,然后在 onLoad 里面调用,不然不起效果

这篇文章就到这里了,整体的思路来自于这篇博客,大致就是这种思想,不过具体的代码会有出入,感兴趣的小伙伴可以去看看 60岁老猿:微信小程序 如何等待onLaunch拿到后端数据后,再执行onLoad

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M_emory_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值