最近在自己开发一款小程序,其中遇到了一些坑和大家分享一下。
app的onLaunch和首页的onLoad加载数据的时间先后是不确定的,所以导致了如果需要在用户登录的时候获取token值,那么可能还没有等到token回来的时候,首页就已经加载了,遇到这个问题解决的办法就是想办法让token回来之后首页再请求加载数据。
1.在首页加载前插入一页加载页面,使得app中onLaunch已经获取了token以后再显示首页,这样是解决首页数据异步加载的问题比较简单的方式。
2.使用callback回调函数,在app.js中可以这样写:
让这个回调函数传递参数,参数就是获取到的token值。我会把token放在缓存空间里面,首页请求数据前,判断缓存中是否有token,如果没有的话,请求回调函数app.callback
为什么这样写就可以让异步的数据变成自己想要的顺序呢?我想了下,大概就是,假设首页比app先一步,当登录还没有完成的时候,也就还没有token值,首页就给app添加了一个函数叫callback,这个函数要传递一个参数,这时候函数是还没有执行的,这个callback只是给app添加的函数,真正执行这个函数的是在app登录了之后,this.callback(res)才是调用这个函数,也就实现了在取得token以后再进行首页数据请求的功能了。
我还是个前端萌新,如有不妥之处,欢迎一起探讨。