能否为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
相关产品推荐
相关产品推荐

