如何让try和catch中的循环继续发出请求而不是在出现错误时崩溃,

问题描述 投票:0回答:2
let array = [];

try {
    for (let i = 0; i < postcodes.length; i++) {

      const companyHouseData = await axios.get(`https://api.company-information.service.gov.uk/advanced-search/companies?location=${postcodes[i}`,{auth});

      if (companyHouseData.status) {
        array.push(companyHouseData)
      }

    }
}catch{
    console.log(err);
}

我在 for 循环中发出请求,并将每个响应推送到一个数组。

我这里遇到的问题是当出现错误请求时(404状态代码)。我的循环中断并且错误被捕获。

如何让循环在出现状态码 404 时继续发出请求而不崩溃?

node.js error-handling try-catch
2个回答
2
投票

如果你想继续使用 axios 发出请求,你应该尝试/捕获 axios 调用,而不是整个 for 循环。

代码应如下所示:

let array = [];

for (let i = 0; i < postcodes.length; i++) {

  try {
    const companyHouseData = await axios.get(`https://api.company-information.service.gov.uk/advanced-search/companies?location=${postcodes[i]}`,{auth});
    if (companyHouseData.status) {
      array.push(companyHouseData)
    }
  } catch (error) {
    console.error(error);
  }
}

0
投票

我建议将 try catch 放在每个请求的 for 循环中,这样如果一个请求失败,它将被捕获,并且您可以执行一些额外的错误处理,循环的其余部分将继续。

© www.soinside.com 2019 - 2024. All rights reserved.