宝哥软件园

如何处理《无极》中的拒绝

编辑:宝哥软件园 来源:互联网 时间:2021-08-30

昨天写了一个小爬虫。当axios.all被用来同时请求多个页面时,国内网络很容易超时然后拒绝。佛教中的决心是不可取的。然后我想我可以实现一个“重新发送失败的请求”的功能。

答应我。全部(请求承诺)。然后(.).捕捉(.)将仅在解析所有requestpromises时才进入then方法,并以数组形式返回所有结果。只要有失败,它就会去抓。如果在单个请求中定义了捕获方法,则不会输入Promise.all的捕获方法。因此,失败的承诺可以在一次捕获中放入一个列表中,然后在一轮请求完成后可以请求失败的请求。

Let failed list=[]函数获取数据byid(id){//这是一个返回新承诺的单个请求(函数(resolve,reject) {getresponse (id,resolve,Reject)})。catch (e={failedList。push(参数。被调用者(id))//如果失败,则重新启动请求,并将请求的承诺放入失败列表供后续处理})}函数getresponse (id,resolve,Reject) {//模拟返回结果settimeout(()={ if(math . random())0.8)resolve({ id,msg 3360 ' ok ' })else Reject({ id,msg3360' error'})},1000)} const request list=[getDataById(1),getDataById(2),getDataById一个请求做了多少次并不重要——让result=[]//最终结果函数获取数据(request list){//下面是请求结果Promise.all(requestList)的处理。然后(resolve={result=result。concat(解析。filter(I=I))//当filter返回true时,保留数组项,因为getDataById的catch中没有返回值(这里也不需要),所以这里解析会有未定义。让失败长度=失败列表。length If(failed length 0 counter max requests times)需要过滤掉{//如果失败列表中有请求,并且请求数量没有超过设置值,将进行下一个请求。并键入log console.log (` ${counter}请求已完成,其中$ {requestlist。length-failedlength}成功,${failedLength}失败,${ counter}请求正在进行中.`)获取数据(failedList)failed list=[]//在这里,你需要清空failed不要担心,如果下次请求失败,它会被填充到getDataById中的failed list中。} else {//表示所有请求都成功,或者达到了最大请求数。结果可以在这里进一步处理。Console.log(`请求已完成,总计${counter}个请求,其中$ { request list . length-failed length }个成功,${failedLength}个失败 n `,结果)计数器=1}})。catch (e={console.log (e)})

摘要

以上是边肖在《无极》中对拒绝的处理。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+