要求是这样的:
给定一个函数,第一个参数是请求的url,第二个参数是设定的超时时间
主要思路:
使用 Promise.race 取限制优先返回的异步结果
具体实现:
// 一个异步请求的示例
const fetchUrl = "https://mock.cangdu.org/mock/5fa25923bcab7337c1b1c274/simple_shopping/product_list";
const foo = function foo(url, time) {
const fetchDemo = fetch(fetchUrl);
const timeout = new Promise((resolve,reject) => {
setTimeout(()=>{
reject("请求超时!")
}, time)
})
return Promise.race([fetchDemo, timeout])
}
// 使用示例
foo(fetchUrl, 100)
.then(res => {
res.json().then(res => {
console.log(res);
})
})
.catch(err => {
console.log(err);
})
上面这个例子,正常情况下是输出一串商品数据,如果把控制台打开然后,调整网速到 Slow 3G,输出的就是报错提示了。
网友评论