微信小程序首页数据初次加载无效,刷新后正常

143 阅读1分钟

微信小程序开发过程中遇到了这个问题: 首页列表数据初次加载失败,但是刷新后又正常。

排查后发现是因为异步调用接口,列表在没有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{
   }
}`