【JavaScript】终止网络请求

AbortController.abort()

通过 AbortController 和 AbortSignal 来中⽌⽹络请求。

使⽤ AbortController 创建⼀个新的 AbortController 对象,然后使⽤它的 abort() ⽅法来中⽌请求。在创建请求时,将 AbortController.signal 分配给请求的 signal 属性,以便在调⽤ abort() ⽅法时取消请求。

js 复制代码
const controller = new AbortController();
const signal = controller.signal;
fetch(url, { signal })
  .then((response) => {
    // Handle the response
  })
  .catch((error) => {
    if (error.name === "AbortError") {
      console.log("Request was cancelled");
    } else {
      console.log("Request failed:", error);
    }
  });
// To abort the request, call the following:
controller.abort();

abort() ⽅法会在 DOM 请求完成之前中⽌它。它能够中⽌ fetch 请求、各种响应主体或者流的消耗。

XMLHttpRequest.abort()

js 复制代码
const xhr = new XMLHttpRequest()
xhr.open(method,url)
xhr.send()
// 然后在某个时间点调⽤ abort() ⽅法
xhr.abort();

当⼀个请求被终⽌,它的 readyState 将被置为 XMLHttpRequest.UNSENT (0),并且请求的

status 置为 0。

CancelToken

js 复制代码
const source = axios.CancelToken.source();
 axios.get('/api/data', {
  cancelToken: source.token
 }).then(response => {
  // 处理响应
}).catch(error => {
  if (axios.isCancel(error)) {
    console.log('请求已被取消:', error.message);
  } else {
    console.log('请求出错:', error.message);
  }
 });
 source.cancel('请求已被⽤户取消');
相关推荐
Wzx19801214 分钟前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
执子念的飞鱼18 分钟前
File Viewer 进入 2K 节点后,我更在意这 3 条回归
前端·typescript
richdata19 分钟前
动态OTB vs 静态OTB:鞋服零售该选哪种管理模式?
前端·html·零售
Jodie同志21 分钟前
第16~23天:持久化、HITL、流式、MCP与安全
前端·后端·agent
牧羊人.33324 分钟前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python
Jodie同志26 分钟前
第1~15天:原生Agent、RAG与LangGraph基础(完整代码实操)
前端·后端·agent
sunly_28 分钟前
React useActionState 的用法详解
前端·javascript·react.js
今日无bug29 分钟前
RESTful + Interface:从 todos 项目理解后端接口设计
前端·restful
用户693717500138437 分钟前
#DeepSeek+Pi‑Agent 王炸组合跑赢 Claude‑Code!
前端·人工智能·后端
小僧景贤38 分钟前
嵌入式C语言 第二篇:基础语法|嵌入式C与标准C的核心差异
c语言·开发语言·嵌入式c语言