做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只会结束当前函数返回结果。