axios取消请求

axios取消请求,主要用于避免不必要的网络开销,优化用户体验。

1. 场景描述

用户短时间内多次触发同一请求,若不取消请求,数据返回顺序错乱,展示数据出现问题。
比如:

  • 搜索框实时联想(用户快速输入时,取消上一次未完成的搜索请求);
  • 表单提交按钮(防止用户重复点击触发多次提交);
  • 分页切换(快速切换页码时,取消上一页的请求);
  • 多条件数据筛选(如按时间、状态、类型筛选列表);

2. 实现实例

在业务组件中调用接口前的处理


  let abortController: AbortController | null = null
  const getDataList = async () => {
     // 取消之前可能正在进行的请求
    if (abortController) {
      abortController.abort()
      abortController = null
    }

    // 延迟一点时间确保取消生效
    await new Promise(resolve => setTimeout(resolve, 50))
    // 开始新的请求,创建新的AbortController
    abortController = new AbortController()

    loading.value = true
    try {
      // 发起请求并传递signal
      const { data, code, msg } = await riskCompanyPage(searchForm, abortController?.signal)
      if (code !== 200) return console.error('获取列表失败:', msg)
      // 处理当前页数据,添加排名
      tableList.value = data.records
      searchForm.total = data.total
    } catch (error) {
      // 忽略取消请求导致的错误
      if (!(error instanceof Error && error.name === 'AbortError')) {
        console.error('获取列表失败:', error)
      }
    }
  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容