网络请求设置超时时间 毫秒 ,如果超过,中断请求,则拒绝显示超时错误 const tioneout = (fetchFunc,ms) => {};
时间: 2024-10-24 13:18:00 浏览: 26
在JavaScript中,你可以使用`fetch`函数来发送网络请求并设置超时时间。然而,`fetch`本身并不直接支持设置超时时间,但可以通过Promise.race或者第三方库如axios实现。以下是一个简单的示例,展示了如何使用`async/await`和`setTimeout`配合来模拟这个功能:
```javascript
const fetchWithTimeout = async (fetchFunc, ms) => {
try {
// 设置一个Promise,如果fetch完成在指定毫秒内返回,则resolve
const responsePromise = await new Promise((resolve, reject) =>
fetchFunc().then(resolve, reject)
);
// 如果fetch在规定时间内未完成,调用reject并显示超时错误
setTimeout(() => {
if (!responsePromise.isPending()) return;
reject(new Error('Request timed out after ' + ms + ' milliseconds'));
}, ms);
return responsePromise;
} catch (error) {
if (error.message.includes('timed out')) {
console.error('Request timed out:', error);
}
throw error; // 或者在这里处理其他错误
}
};
// 使用示例
const fetchMyData = () => fetch('https://api.example.com/data');
const timeoutFetch = fetchWithTimeout(fetchMyData, 5000); // 设置5秒超时
timeoutFetch.then(response => console.log(response))
.catch(error => console.error(error));
```
注意,这只是一个基本的示例,实际应用可能需要考虑更复杂的场景,比如网络连接不稳定时的重试逻辑。另外,`fetch`的超时特性依赖于网络环境,浏览器可能有自己的行为规范。
阅读全文