0
点赞
收藏
分享

微信扫一扫

前端中断请求

科牛 2022-01-06 阅读 74

Axios篇

axios默认使用的content-type是application/json,
方法一:设置超时时间
方法二:axio提供了一个一个CancelToken的函数,用来取消接口请求
1.首先,先定义cancel变量

data:{
	cancel:null}

2.在函数中运用

let CancelToken = axios.CancelToken
let that = this
axios({
method:"",
url:"",
cancelToken:new CancelToken(function executor(a){
	that.cancel =  a
 // 这个参数 a 就是CancelToken构造函数里面自带的取消请求的函数,
	})
}).then(res=>{}).catch(error=>{})

3.在某个函数中执行取消请求

funA(){
	this.cancel()
}

Ajax篇

方法一:同样是设置超时时间让Ajax自动断开
方法二:手动停止,调用XMLHttpRequest对象上的Abort方法

var ajax1 = $.ajax({

})

调用

ajax1.abort()

注意:不要用abort方法来作为终止对服务器的请求操作,只能当做在前端页面立刻停止执行ajax成功后的方法,因为你执行abort方法后,ajax很可能已经对服务端发送了请求,只是还未返回回馈信息而已。

原生Javascript

var xmlHttp = new XMLHttpRequest()
xmlHttp.open("method","url","async")
xmlHttp.onreadystatechange = function(){
//得到响应之后的操作
}
xmlHttp.send()
//设置几秒钟时候检查发送的数据是否得到响应
setTimeout("check()",2000)
//检查xmlHttp对象所发送的数据是否得到响应
function check(){
//为4时代表请求完成了
if(xmlHttp.readyState !=4){
//响应超时,关闭请求
xmlHttp.close()
}}

或者使用abort

ver xhr = new XMLHttpRequest()
xhr.open(....)
//调用
function A(){
		xhr.abort()
}
举报

相关推荐

0 条评论