通过AbortController停止请求,后端/a用setTimeout模拟慢请求,
点击button2阻止请求,能够catch到错误aborted,但是实际上浏览器
仍然会返回接口/a数据(后端定时器到时),这是不是不算停止请求,还是模拟超时不对
`
const button1=document.querySelector('#button1')
const button2=document.querySelector('#button2')
const controller = new AbortController();
let signal = controller.signal;
button1.addEventListener('click',async ()=>{
fetch('/a',{signal}).then(async v=>{
console.log(await v.json())
}).catch(e=>{
console.log(e.message)
})
})
//stop
button2.addEventListener('click',async ()=>{
controller.abort();
})`
AbortController 兼容性应该不太好,在实际业务中不采取。
中止请求的方法有: