ajax捕捉超时处理不重复处理错误
时间: 2023-10-19 09:14:55 浏览: 125
当使用 AJAX 发送请求时,如果请求超时,我们可以通过设置 AJAX 的 `timeout` 属性来处理超时错误。例如:
```javascript
$.ajax({
url: "example.com",
timeout: 5000, // 设置超时时间为5秒
success: function(result) {
console.log(result);
},
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus === 'timeout') {
console.log('请求超时!');
} else {
console.log('发生了其他错误!');
}
}
});
```
在上面的代码中,我们设置了超时时间为 5 秒。如果请求在 5 秒内没有得到响应,就会触发 `error` 回调函数,并且 `textStatus` 参数的值为 `'timeout'`,我们就可以在该回调函数中处理超时错误。
如果请求超时后,我们不想重复处理错误,可以使用一个变量来记录是否已经处理过超时错误。例如:
```javascript
var handledTimeoutError = false;
$.ajax({
url: "example.com",
timeout: 5000,
success: function(result) {
console.log(result);
},
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus === 'timeout' && !handledTimeoutError) {
console.log('请求超时!');
handledTimeoutError = true;
} else {
console.log('发生了其他错误!');
}
}
});
```
在上面的代码中,我们使用一个名为 `handledTimeoutError` 的变量来记录是否已经处理过超时错误。如果超时错误发生了并且 `handledTimeoutError` 的值为 `false`,我们就处理超时错误并将 `handledTimeoutError` 设置为 `true`。这样,即使请求后续再次超时,我们也不会重复处理错误。
阅读全文