微信小程序开发过程中遇到了这个问题: 首页列表数据初次加载失败,但是刷新后又正常。
排查后发现是因为异步调用接口,列表在没有token的情况下先行加载了,导致失败。
解决方法:一、检查获取token的api代码,优化调用时机,让它在首页加载前获取token;
二、列表轮询,在首页接口加载处使用轮询,通过判断是否成功获取到token为条件执行获取列表数据的接口。代码如下:
````async getListData() = {
try {
let interval_id;
let promise = new Promise((resolve,reject)=> {
let postData = {
valONe = '';
valTwo = '';
} //接口参数
interval_id = setInterval(()=> {
//判断是否有token
if(token) {
//发起请求
let innerPromise = requests({
method:'POST',
url: 'url',
data: postData,
}).then(response => {
//成功的操作
}
}).catch{
//失败的操作
});
//干掉定时器
innerPromise.then(() => {
clearInterval(interval_id)
}).catch(() => {
carInterval(interval_id)
});
},200)
});
} catch{
}
}`