介绍
怎么在Promise.all中对于拒绝进行处理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
<代码> Promise.all (requestPromises) (…) .catch(…)> 代码会在所有requestPromises都解决时才会进然后方法,并且把所有结果以一个数组返回。只要有一个失败,就会进。如果在单个请求中定义了抓住方法,那么就不会进的承诺。所有的抓住方法,因此,可以在单个的捕获中将失败的承诺放入一个名单,待一轮请求完成后,再去请求失败的请求。
let failedList =, [] function getDataById (id),{//大敌;这是单个请求 ,return new 承诺(function (解决,,拒绝),{ getResponse才能(id,决心,,拒绝) ,}).catch (e =祝辞,{ failedList.push才能(arguments.callee (id),//,如果失败,就重新发起请求,并将该请求的承诺放入failedList中以便后续处理 ,}) } function getResponse (id,决心,,拒绝),{,//模拟返回结果 ,setTimeout((),=祝辞,{ if 才能;(math . random(),祝辞,0.8),解决({id,味精:& # 39;好# 39;}) else 才能拒绝({id,味精:& # 39;错误# 39;}) ,},1000) } const RequestList =, [getDataById (1), getDataById (2), getDataById (3)) fetchData (RequestList) let counter =, 1,//,请求次数 let maxRequestTimes =, 5,//,最大请求次数,因为有可能别个页面就是访问不了,请求多少次也没用神;神; let result =,[],//,最后的结果 function fetchData (requestList),{,//这里是对请求结果的处理 ,Promise.all (requestList) (resolve =祝辞,{ result 才能=,result.concat (resolve.filter(小姐:=祝辞,i)),//,过滤器返回真实的时候保留该数组项,因为getDataById的捕捉里没有给返回值(这里也不需要),这里的决心里就会有定义,需要过滤掉 let 才能;failedLength =failedList.length if 才能;(failedLength 祝辞,0,,,,counter & lt;, maxRequestTimes),{,//如果失败列表里有请求,并且请求次数不超过设定的值,就进行下一次请求,并且打出日志 ,才能console.log(“第${柜台}次请求完成,其中成功$ {RequestList.length 作用;failedLength}个失败{failedLength}个美元,正在进行第${+ +柜台}次请求……”) ,,fetchData (failedList) ,,failedList =,[],//,这里要清空failedList,不然会一直调用。不用担心,下一次请求失败的会在getDataById填充到failedList里。 ,,},else {,//表示所有请求都成功了,或者达到了最大请求次数。到这里就可以对结果做进一步处理了。 ,,console.log(“请求完成,共请求${柜台}次,其中成功$ {RequestList.length 作用;failedLength}个失败$ {failedLength}个\ n ',,结果) ,,counter =1 ,,} ,}).catch (e =祝辞,{ console.log才能(e) ,}) }
关于怎么在Promise.all中对于拒绝进行处理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。