首页>>前端>>JavaScript->fetch 设置超时断开请求

fetch 设置超时断开请求

时间:2023-11-30 本站 点击:0

AbortController.abort()

中止一个尚未完成的Web(网络)请求。这能够中止fetch请求,任何响应Body的消费者和流。

Promise.race()

race函数返回一个Promise,它将与第一个传递的 promise 相同的完成方式被完成。它可以是完成(resolves),也可以是失败(rejects),这要取决于第一个完成的方式是两个中的哪个。 如果传的迭代是空的,则返回的 promise 将永远等待。 如果迭代包含一个或多个非承诺值和/或已解决/拒绝的承诺,则Promise.race将解析为迭代中找到的第一个值。 返回第一个完成的Promise。

/***实现fetch的timeout功能*@param{object}fecthPromisefecth*@param{Number}timeout超时设置,默认5000ms**/letcontroller=newAbortController();exportfunctionfetch_timeout(fecthPromise,timeout=6000){letabort:any=null;letabortPromise=newPromise((resolve,reject)=>{abort=()=>{returnreject({code:504,message:'请求超时!',});};});//最快出结果的promise作为结果letresultPromise=Promise.race([fecthPromise,abortPromise]);setTimeout(()=>{abort();controller.abort();},timeout);returnresultPromise.then((res)=>{clearTimeout(timeout);returnres;});}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/3914.html