You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为AbortController的abort方法提供中止请求的原因?

为AbortController的abort操作设置中止原因

当然可以给AbortController的abort()方法传入自定义中止原因,这个原因会被携带在抛出的AbortError异常中,替换默认的"signal is aborted without reason"提示。

修改后的代码示例

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

fetch('https://jsonplaceholder.typicode.com/todos/1', { signal })
  .then(response => response.json())
  .then(data => console.log('Data:', data))
  .catch(err => {
    console.log(err);
    if (err.name === 'AbortError') {
      // 获取自定义中止原因
      console.log('中止原因:', err.reason);
    }
  });

// 传入自定义中止原因调用abort
setTimeout(() => {
  controller.abort('请求超时,主动中止');
}, 10);

执行后输出

DOMException: 请求超时,主动中止
中止原因: 请求超时,主动中止

abort()方法支持传入一个可选参数作为中止原因,该参数会被赋值给AbortSignal的reason属性,同时抛出的DOMException的message会替换为这个原因,也可以直接通过异常对象的reason属性访问自定义原因。

内容的提问来源于stack exchange,提问作者Royi Namir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:52:02