由于angular的HTTP请求返回promise类型的数据,通过subscribe()方法来接收返回数据,因此可以通过调用取消订阅 unsubscribe()方法来实现中断HTTP请求。
1.取消一个http请求
let subscribes:any;
this.subscribes = this.http.getChannels(connectionName).subscribe((channels: any) => {})
cancelHttp() {
//取消请求
this.subscribes.unsubscribe()
}
2.当同时多次发送请求时,取消之前的请求
let subscribes:any;
let httpStatus=false
cancelHttp() {
if(this.httpStatus){
//取消请求
this.subscribes.unsubscribe()
}else{
//设置状态为true,请求正常进行
this.httpStatus=true
}
}
httpRequest(){
this.subscribes = this.http.getChannels(connectionName).subscribe((channels: any) => {
this.httpStatus=false
})
}
3.取消多组数据,相同的请求(使用唯一id进行区分,只取消相同id的请求,不取消别的
let subscribes={};
let httpStatus={}
cancelHttp() {
if(this.httpStatus[id]){
//取消请求
this.subscribes[id].unsubscribe()
}else{
//设置状态为true,请求正常进行
this.httpStatus[id]=true
}
}
httpRequest(){
this.subscribes[id] = this.http.getChannels(connectionName).subscribe((channels: any) => {
this.httpStatus[id]=false
})
}```