钉钉小程序如何解决页面加载完之后才获取到数据的问题,如何在 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 

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

 index.js

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

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

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

你可能感兴趣的:(钉钉小程序,钉钉,小程序,前端)