return不生效问题记录

在前端JS项目中,遇到一个问题:在请求拦截器中检查token,若未登录则应跳转到登录页,但实际操作中发现即使返回了location.href,请求仍继续执行导致延迟跳转。解决方案是在拦截器中使用return false终止操作,并通过节流函数避免登录超时警告的多次弹出,从而优化用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做js项目时,在请求拦截里判断是否有token,没有的话就跳转登录页,结果发现没有登陆直接进入home页面,return之后没有终止,会在继续执行,一直等home页面的请求完毕之后才会跳转到login页面

return location.href = './login.html';

如下执行了 location.href = ‘./login.html’; 但是还在home页
在这里插入图片描述
解决:
return false会终止操作

    location.href = './login.html';
    return false

但是在响应拦截complete里面return false还是会执行其他函数,本来想判断一下登录超时用alft()弹出一个警告,结果因为是每次请求都会触发complete(每一个请求不是在一个函数中写的),这样就会造成登陆超时了,第一次触发complete会执行弹窗,一个页面有多个请求的话就会多次触发, 会依次弹出多个弹框
于是做了一个节流问题就完美的解决了,这样登录超时的时候虽然会执行下面的函数 但是不会重复的弹出警告框了

var key = true
function throttle(msg) {
   if(key){
    key = false
     alert(msg);
       setTimeout(()=>{
        key = true
   },3000)
   }else{
     return
   }
 };

ps:
return false只会结束当前函数返回结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值