这样写重新发起请求导致了递归调用死循环
时间: 2024-03-13 20:46:14 浏览: 162
你说的有道理,如果不加限制条件,的确会导致递归调用死循环。为了避免这种情况,可以在自定义处理401状态码的情况中,添加一个标识,表示当前是否正在重新发起请求。具体做法如下:
```javascript
var isRefreshing = false; // 添加标识,表示当前是否正在重新发起请求
$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (jqxhr.status == 401) {
event.preventDefault(); // 取消默认的跳转行为
// 自定义处理401状态码的情况
if (!isRefreshing) { // 如果当前没有正在重新发起请求
isRefreshing = true; // 标识当前正在重新发起请求
$.ajax({
type: 'GET',
url: settings.url, // 重新发起请求
headers: {
'Authorization': 'Bearer ' + token // 添加Authorization信息
},
success: function(data) {
// 处理成功的情况
isRefreshing = false; // 标识重新发起请求完成
},
error: function(jqxhr, status, error) {
// 处理失败的情况
isRefreshing = false; // 标识重新发起请求完成
}
});
}
}
});
```
这样,当后端返回401状态码时,只有当前没有正在重新发起请求时才会重新发起请求,避免了递归调用死循环的问题。
阅读全文