(1)问到如何终止发送的HTTP请求时,被问到,所以总结记录如下。(二)三种方式1.终止一个XHR请求varxhr=XMLHttpRequest;xhr.abort()2.终止FetchAbortController.abort()与XHR的abort()方法不同的是一旦调用了AbortController.abort()方法,被标记的Fetch就不能再次发起请求,这与XHR的abort()方法是一致的Axios中终止请求的机制。3.终止一个axios请求varCancelToken=axios.CancelToken;varsource=CancelToken.source();/***启动一个AxiosPost请求*/functionaxiosPost(){axios.post(url,undefined,{cancelToken:source.token,}).then(function(res){console.log('Axios:',res.data);}).catch(e=>{console.log('Axioserror:',e);});}/***终止一个axios请求*/functionabortAxios(){console.log('尝试终止axios请求');source.cancel('Axioswasterminated');}实现了axios的cancel()方法效果类似于AbortController接口的abort()方法,即一旦调用该方法,实例将不再允许再次发送网络请求。但是axios网络请求是基于XHR实现的,终止网络请求的方法也是调用XHR的abort()方法。之所以它的效果与XHR.abort()终止后仍然可以再次请求的效果不一致,是因为axios是基于Promise进行封装的。一旦调用了cancel()方法,Promise就会抛出异常并被记录下来。下次调用该实例发起请求时,直接抛出异常,不再发起网络请求。具体实现方法请参考axios源码。参考链接https://www.hozen.site/archiv...写在学习路上的最后一句话,经常懈怠《有想学技术需要监督的同学嘛~》https://mp.weixin.qq.com/s/Fy...欢迎关注我公众号:国兴聊成长,每周分享我学到的成长/认知方法
