Promise.race()网络请求设置超时时间 毫秒 ,如果超过,中断请求,则拒绝显示超时错误 const tioneout = (fetchFunc,ms) => {};
时间: 2024-10-24 17:11:37 浏览: 29
微信小程序网络请求封装示例
`Promise.race()` 方法可以用于设置网络请求的超时时间,当请求在指定的时间内未完成时,可以中断并拒绝该Promise,从而显示超时错误。以下是如何使用 `Promise.race()` 实现这个功能的示例:
```javascript
const timeoutPromise = (fetchFunc, ms) => {
// 创建一个在指定毫秒(ms)后解析的Promise
const timer = new Promise((resolve, reject) => setTimeout(() => reject(new Error('Timeout')), ms));
// 使用 fetchFunc 发起网络请求
const requestPromise = fetchFunc();
// 使用 race 方法,当requestPromise完成或者timer拒绝时结束
return Promise.race([requestPromise, timer]);
};
// 调用timeoutPromise来发起网络请求,如果超过5000毫秒(5秒)还未响应,将会显示超时错误
try {
timeoutPromise(fetch, 5000).then(response => console.log('Response received'));
} catch (error) {
if (error instanceof Error && error.message === 'Timeout') {
console.error('Request timed out');
} else {
throw error;
}
}
```
在这个例子中,如果网络请求在5秒内未返回结果,`Promise.race`会执行timer内的回调,抛出一个带有错误信息的异常,被捕获并在catch语句中处理。
阅读全文