Javascript Axios卡住时的异步/等待

Javascript Axios卡住时的异步/等待,javascript,node.js,async-await,axios,bluebird,Javascript,Node.js,Async Await,Axios,Bluebird,以下是我试图做的:我使用for循环(大约3000个链接)遍历一个json文件,其中包含我们网站的全部链接,在循环中,我为每个链接执行axios get,并获取响应状态代码(将来还会做其他事情)。我的代码在随机迭代中被卡住了,有时是在第125个链接,有时是178个,有时是300个。我的控制台就在那里,没有错误 似乎在某些随机链接上,get请求花费的时间太长,我如何跳过花费太长的链接,或者我可以为每个get请求设置一个超时,如果在该特定时间内没有返回任何内容,则跳过该迭代 我试着在任何地方都放置tr

以下是我试图做的:我使用for循环(大约3000个链接)遍历一个json文件,其中包含我们网站的全部链接,在循环中,我为每个链接执行axios get,并获取响应状态代码(将来还会做其他事情)。我的代码在随机迭代中被卡住了,有时是在第125个链接,有时是178个,有时是300个。我的控制台就在那里,没有错误

似乎在某些随机链接上,get请求花费的时间太长,我如何跳过花费太长的链接,或者我可以为每个get请求设置一个超时,如果在该特定时间内没有返回任何内容,则跳过该迭代

我试着在任何地方都放置try catch,但没有任何记录,我也试着使用blubird map而不是loop,这是相同的交易,有人知道发生了什么吗

var cheerio=require('cheerio');
var axios=需要(“axios”);
常数fs=要求('fs');
var four04=“404”;
var statusCheck=0;
var main=[];
让rawdata=fs.readFileSync('C:/Users/jay/Documents/crawl/filtered.json');
让jsonParsed=JSON.parse(rawdata);
异步函数生成请求(行){
用于(行的常量行){
试一试{
const encodedLink=encodeURI(line.link)
状态检查=状态检查+1
console.log(encodedLink+“:”+状态检查)
const response=等待axios.get(encodedLink)
console.log(response.status)
}捕获(错误){
var状态\u ErrorsCatch={
“状态代码”:error.response.status?error.response.status:“没有可用的状态代码”,
“页面标题::$('title').text()?$('title').text():'没有可用的标题',
“原始链接”:encodedLink?encodedLink:“没有可用的原始链接”,
}
主推送(状态错误)
}
}
}
试一试{
makeRequests(jsonParsed)
}捕获(错误){
日志(“整个功能错误”,错误)

}
您可能受到费率限制。与其问一个如此宽泛的问题的潜在解决方案,不如自己尝试不同的解决方案,然后回来问你是否/何时陷入困境。@MichaelCheng使用了一个新的承诺,在每40次请求之后设置15分钟的超时时间,这意味着每40次请求之后,代码会中断15分钟,但仍然会发生同样的问题如果(statusCheck%40==0){等待新的承诺(resolve=>setTimeout(resolve,900000))}`您可能受到速率限制。与其问一个如此宽泛的问题的潜在解决方案,不如自己尝试不同的解决方案,然后回来问你是否/何时陷入困境。@MichaelCheng使用了一个新的承诺,在每40次请求之后设置15分钟的超时时间,这意味着每40次请求之后,代码会中断15分钟,但仍然会发生同样的问题if(statusCheck%40==0){等待新承诺(resolve=>setTimeout(resolve,900000))}`