Chinaboys 发表于 2022-10-23 11:58:47

Vue项目页面加载未同步到数据时,执行轮询接口问题?

描述:后台同学调用第三方接口拿到数据给前端渲染页面,问题是后台数据没有及时同步到位。故此要求前端对接口执行轮询。{首次请求数据未同步过来时,执行setInterval 2s一次 3次},
这样写有什么问题吗?或是朋友有简洁的代码供学习下。谢谢大佬。
或是对此情况有更好的方案 求指点。
代码如下:
const loadPacketInfo= () => {
    return new Promise((resolve, reject) => {
      getPacketApi()
            .then((result) => {
                resolve(result);
            })
            .catch((err) => {
                resolve({});
            });
    });
};//queryAction 触发操作
const queryAction = () => {
    Toast.loading({
      message: '加载中...',
      duration: 0,
      forbidClick: true,
    });

    loadPacketInfo().then((res) => {
      const { data, errno } = res;
      if (errno === '0') {
            if (data.mixedData && data.mixedData.length === 0) {
                let num = 0;
                const timer = setInterval(() => {
                  num++;
                  if (num > 3) {
                        Toast.clear();
                        clearInterval(timer);
                        return;
                  }
                  loadPacketInfo().then((result) => {
                        const { data } = result;
                        if (data.mixedData && data.mixedData.length > 0) {
                            updateWrap(data.mixedData);
                            Toast.clear();
                            clearInterval(timer);
                        }
                  });
                }, 2000);
            } else {
                if (data.mixedData && data.mixedData.length > 0) {
                  updateWrap(data.mixedData);
                  Toast.clear();
                }
            }
      }
    });
};

页: [1]
查看完整版本: Vue项目页面加载未同步到数据时,执行轮询接口问题?