在前端开发中,如何处理列表分页时遇到接口延迟或数据返回顺序不一致的问题

1. 加载状态指示

在发送请求时,设置一个加载状态(例如 isLoading),告诉用户正在加载数据。当收到数据后,再更新状态。

2. 取消上一个请求

在发送新的请求之前,可以取消之前的请求。使用像 Axios 的 CancelToken 可以帮助你做到这一点。

3. 保持数据一致性

在每次请求时,保存当前请求的页码,并在数据返回时检查这个页码。只有当返回的数据页码与当前请求的页码一致时,才更新视图。

复制代码
fetchData(page) {
      this.currentPage = page;
      
      // 取消上一个请求
      if (this.cancelTokenSource) {
        this.cancelTokenSource.cancel("Operation canceled due to new request.");
      }

      this.isLoading = true;

      // 创建一个新的取消令牌
      this.cancelTokenSource = axios.CancelToken.source();

      axios.get(`/api/data?page=${this.currentPage}`, {
        cancelToken: this.cancelTokenSource.token,
      })
      .then(response => {
        // 仅在请求的页面与当前页面一致时更新数据
        if (response.data.page === this.currentPage) {
          this.items = response.data.items;
        }
      })
      .catch(error => {
        if (axios.isCancel(error)) {
          console.log("Request canceled:", error.message);
        } else {
          console.error("Error fetching data:", error);
        }
      })
      .finally(() => {
        this.isLoading = false;
      });
    },
相关推荐
C++、Java和Python的菜鸟9 分钟前
第5章 后端Web基础 (MySQL基础)
前端·mysql·adb
门前大桥下.17 分钟前
HTML-01我的第一个网页
前端·html
我是大卫26 分钟前
【图】React源码解析-从数据结构、依赖追踪机制、值传播与更新触发、以及性能陷阱与优化,深挖useContext的底层原理
前端·react.js·源码
谭光志31 分钟前
深入浅出 RAG:用一个可运行的 Demo 讲透完整链路
前端·后端·ai编程
Cobyte35 分钟前
使用 JavaScript 实现有限状态机的经典问题
前端·javascript·vue.js
道友可好39 分钟前
前端工程师的 AI 时代生存指南
前端·人工智能·后端
●VON44 分钟前
鸿蒙 PC Markdown 编辑器质量流水线:Web 构建、回归与 Release 门禁
前端·华为·编辑器·harmonyos·鸿蒙
acheding1 小时前
File System Access API 实战:让网页真正读写本地文件
前端·javascript·vue.js·编辑器·markdown
何时梦醒1 小时前
⚛️ React 19 + TypeScript 深度学习笔记 —— 从组件化思维到 WebGPU 端侧 AI 落地
前端·javascript·人工智能
橘子星1 小时前
在浏览器里跑大模型!用 WebGPU 零成本部署 DeepSeek-R1
前端·typescript