fetch请求超时如何添加
时间: 2023-11-16 09:16:26 浏览: 164
要在 JavaScript 中添加 Fetch 请求超时,可以使用 `AbortController` 和 `setTimeout` 函数的组合。
首先,创建一个 `AbortController` 对象,并通过它创建一个 signal。将该 signal 作为 Fetch 请求的参数传递给 `fetch` 函数。然后,使用 `setTimeout` 函数,设置一个超时时间,在超时时间到达时,调用 `AbortController` 对象的 `abort` 方法取消请求。
以下是一个示例代码:
```javascript
const controller = new AbortController();
const signal = controller.signal;
const fetchPromise = fetch('https://some-api.com/data', { signal });
const timeoutId = setTimeout(() => {
controller.abort();
}, 5000); // 设置 5 秒超时时间
fetchPromise
.then(response => response.json())
.then(data => {
clearTimeout(timeoutId);
// 处理返回的数据
})
.catch(error => {
clearTimeout(timeoutId);
if (error.name === 'AbortError') {
console.log('请求超时!');
} else {
console.error('请求失败!', error);
}
});
```
在这个示例中,我们使用 `AbortController` 和 `signal` 来创建 Fetch 请求。然后,我们设置了一个 5 秒的超时时间,并将其作为 `setTimeout` 函数的第二个参数传递。在 `fetchPromise` 被解决或拒绝时,我们使用 `clearTimeout` 函数取消超时定时器。
如果超时时间到达,超时定时器将调用 `AbortController` 对象的 `abort` 方法取消请求。在 `catch` 块中,我们检查错误类型,如果是 `AbortError`,则表示请求已经被取消,否则则表示请求失败。
阅读全文