关键词: onLaunch onLoad 异步请求问题
问题:
在小程序启动时,我希望在app.js 的onLaunch生命周期里,调用后端接口,获取登陆状态token。
然后再加载首页,进入index.js时,携带此token,调用其它接口获取数据。
也就是说我希望的执行顺序是:
-
进入app.js 中 onLaunch
-
-
ajax获取token完成,保存在storage里
-
-
进入index.js 中 onLoad
-
-
从storage里获取到token
-
携带token调用其它接口
-
但实际上的顺序却是:
-
进入app.js 中 onLaunch
-
-
ajax获取token,发起请求开始...
-
-
进入index.js 中 onLoad
-
-
尝试从storage里获取token,但请求还没结束,token为空
-
携带token调用其它接口:失败,因为没有token
-
ajax获取token结束,保存在storage里(此时才获取到token,为时已晚)
-
解决方法是用回调,代码如下
app.js
index.js
其中 this.getList()方法,是会携带token(从storage中读取),调用后端其它接口,所以必须要在调用getList()之前,先设置好token