function retry(fn, delay){
return new Promise((resolve, reject)=>{
Promise.race([fn(), timeout(delay)].then(
resolve(res);
)).catch(err => {
reject("race内部超时")
})
}).catch(err =>{
console.log(err);
return retry(fn, delay)
})
}
//超时检测
const timeOut = (delay)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
reject(false)
}, delay);
})
}
//模拟请求
const test = function(){
const delay = Math.floor(Math.random*10000);
console.log('本次请求花费:${delay}ms');
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve(1234)
}, delay);
})
}
代码实现:使用Promise实现请求超时重试
最新推荐文章于 2024-04-17 20:36:29 发布
本文详细讲解如何利用JavaScript的Promise来实现HTTP请求的超时处理及自动重试功能,通过设置超时时间和重试次数,确保在网络不稳定的情况下也能完成关键数据的获取。内容包括Promise的基本用法、超时逻辑的封装以及重试策略的实现。
摘要由CSDN通过智能技术生成