多种中断HTTP请求的方式


🤩🤩🤩
To 个人主页 关注不迷路 😙😙😙


一、XHR

const xhr = new XMLHttpRequest();
addListeners(xhr);
xhr.open("GET", url);
xhr.send();

// 中止请求
xhr.abort();

二、fetch

中止 fetch 的请求

2.1 AbortController

使用AbortController创建一个信号,自主控制请求的中止。

const controller = new AbortController();
const signal = controller.signal;

fetch(url, { signal })
  .then((response) => {
    console.log("Download complete", response);
  })
  .catch((err) => {
    console.error(`Download error: ${err.message}`);
  });

// 中止请求
controller.abort();

2.2 AbortSignal

使用AbortSignal创建一个超时信号

try {
  const res = await fetch(url, { signal: AbortSignal.timeout(5000) });
} catch (err) {
  if (err.name === "TimeoutError") {
    // ...
  } else if (err.name === "AbortError") {
    // ...
  } else if (err.name === "TypeError") {
    // AbortSignal.timeout() method is not supported
  } else {
    // A network error, or some other problem.
    console.error(`Error: type: ${err.name}, message: ${err.message}`);
  }
}

三、Axios

3.1 AbortController

从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 中止请求:

const controller = new AbortController();
const signal = controller.signal;

axios.get("/foo/bar", { signal }).then(function (response) {
  //...
});

// 中止请求
controller.abort();

3.4 CancelToken deprecated

您还可以使用 cancel token 取消一个请求。

  • Axios 的 cancel token API 是基于被撤销 cancelable promises proposal。
  • 此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用。

可以使用 CancelToken.source 工厂方法创建一个 cancel token ,如下所示:

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios
  .get("/user/12345", {
    cancelToken: source.token,
  })
  .catch(function (thrown) {
    if (axios.isCancel(thrown)) {
      console.log("Request canceled", thrown.message);
    } else {
      // 处理错误
    }
  });

axios.post(
  "/user/12345",
  {
    name: "new name",
  },
  {
    cancelToken: source.token,
  }
);

// 取消请求(message 参数是可选的)
source.cancel("Operation canceled by the user.");
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Dianzishizhongsheji 目 录 一、设计要求 1 二、设计目的 1 三、设计的具体实现 1 1、系统概述 1 2、单元电路设计 2 2.1、8255初始化: 3 2.2、8253初始化: 3 2.3、8259初始化: 4 3、软件程序设计和调试 5 3.1、主程序流程图: 5 3.2、电子时钟中断处理程序流程图: 6 3.3、显示模块流程图: 7 3.4、程序代码: 7 四、结论与展望 14 五、心得体会及建议 14 六、附录 15 七、参考文献 15 电子时钟的设计报告 一、设计要求 利用8259A中断控制器、8253定时/计数器、8255A接口芯片以及键盘和数码显示电路 ,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。 电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,最大记时59:59:59超过 这个时间时分秒位都清零从00:00:00重新开始。 1. 电子时钟具有二十四小时循环记时功能,走时要准。 2. 显示格式,时:分:秒。 3. 利用8253作为定时器。 二、设计目的 通过本次课程设计学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理 论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通 过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使设计者的 设计水平和对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。 1. 熟练掌握8086/88教学系统的基本操作和调试程序的各种指令。 2. 掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法。 3. 掌握8255的各种工作方式及其应用编程。 4. 掌握8253定时/计数器的工作原理、工作方式及其应用编程。 5. 熟悉编程及调试程序的方法。 6. 练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法。 三、设计的具体实现 1、系统概述 基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块 三大部分组成。以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为1 0kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。在写入控制字与计数初值后, 每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电 平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制 一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min, 同理由数码管显示1h.CPU处理,使数码管的显示发生变化。 本设计由8259A中断控制器、8253定时/计数器、8255A接口芯片、LED数码显示管和两 个按键组成。主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,I RQ6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲信号作为IRQ7的中断 请求信号。按键KK1+和KK2+分别作为IRQ2和IRQ6的中断请求信号。按键KK1+启动/关闭对 时功能。它决定是否屏蔽IRQ7和IRQ6中断源。8255A负责将内存里的时位和分位值输出到 数码管。 电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,每百分之一秒对百分之 一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显 示时、分、秒的当前值。最大记时59:59:59超过这个时间时分秒位都清零从00:00: 00重新开始。 2、单元电路设计 8259A的主要功能: (1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断 源。 (2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直 到取消屏蔽时为止。 (3)能向CPU提供可编程的标识码。 (4)具有多种中断优先权管理方式。有完全嵌套方式、自动循环方式、特殊循环方 式、特殊屏蔽方式和查询方式五种。这些管理方式均可通过程序动态地进行变化。在本 设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实 现的。 8255A的主要功能: 可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。通过8255A,CPU可 直接同外设相连接,其负责CPU和外设之间的数据传送。 8253的主要功能: 可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工 作,不占用CPU的时间。通道2工作在3方式下,提供计算一秒的中断请求信号。 该系统是一个简单的利用8253定时器、8255可并行通信接口和中断控制器8259设计的 电子时钟系统,在该系统中设有一个启动键,启动键未按下时,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逛街的猫啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值