页面跳转取消请求操作实现

页面跳转取消请求操作

场景:当从A页面跳转到B页面时,发生在A页面到请求操作仍然在进行,那么B页面到请求操作就会被加入到队列中等待。在某些情况下,A页面到请求结果对我们来说已经没有了任何意义,所以主动把正在进行对请求取消掉,可以优化程序。

  • javascript
var controller = new AbortController();
var signal = controller.signal;

BtnStart.addEventListener('click',fetchVideo);
BtnAbort.addEventListener('click',function(){
	controller.abort();
});

//请求函数
function fetchVideo(){
	fetch(url,{signal}).then(function(){
	//xxxxxx进行操作
}).catch(function(e){
	reports.textContent='Download error:' + e.message;
});
}

通过创建AbortController对象,以这个对象对signal作为标识,在用户触发了abort() 时,则取消fetch,并返回了一个abortError。

  • react中实现
    1⃣️实例化AbortController
componentDidMount(){
	if('AbortController' in window){
		window.controller = new AbortController();
		this.setState({
		signal:controller.signal
		});
	}
}

2⃣️在请求中加入signal

request =()=>{
	fetch(url,{signal}).then(function(response){
		//xxxxx请求操作	
	}).catch(function(e){
		reports.textContent = 'Download error:' + e.message;
	})
}

3⃣️在页面中unMount时,触发abort()

componentWillUnmount(){
	if('AbortController' in window){
		window.controller.abort();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值