Javascript 100个提取请求中有1个失败并导致错误。如何继续该计划?

Javascript 100个提取请求中有1个失败并导致错误。如何继续该计划?,javascript,json,promise,fetch,Javascript,Json,Promise,Fetch,我向一个api发出了100个fetch请求,NR35有点问题(它不会返回json文件)。问题是我出现了这个错误,我的程序崩溃了。我怎样才能抓住这个错误,把它放在一边,继续程序的其余部分 const pokeapiPromise = []; for (let i = 600; i <= 700; i++) { const url = `https://pokeapi.co/api/v2/pokemon/${i}`; pokeapiPromise.push(fetch(url).the

我向一个api发出了100个fetch请求,NR35有点问题(它不会返回json文件)。问题是我出现了这个错误,我的程序崩溃了。我怎样才能抓住这个错误,把它放在一边,继续程序的其余部分

const pokeapiPromise = [];
for (let i = 600; i <= 700; i++) {
  const url = `https://pokeapi.co/api/v2/pokemon/${i}`;
  pokeapiPromise.push(fetch(url).then((res) => res.json()));
}

Promise.all(pokeapiPromise).then((result) => {
  const pokemon = result.map((data) => ({
    name: data.name,
  }));
});

但那没用。有什么想法吗?

错误的原因是URL返回609的HTTP 404错误(至少对我而言):

…它返回“notfound”作为body,这显然不代表有效的JSON

因此,您可以检查响应对象的
ok
属性。下面是一个仅限于其中3个URL(608-610)的演示:

const pokeapiPromise=[];
for(让i=608;i res.ok?res.json():{httpStatus:res.status})//这个609案例
.catch(err=>({error:err.message}));//其他错误
}
Promise.all(pokeapiPromise)。然后((结果)=>{
log(result.map(data=>data.name | | data));

});对请求35的响应是什么?您是否尝试只附加catch?处的端点不返回任何内容。首先,我得到以下信息:get 404您没有错误处理,因此,如果出现错误,情况当然会恶化。您需要正确的错误处理,以便能够吸收错误并继续。如果你的
.catch()
不起作用,那显然是因为你做得不正确,而有人能帮助你的唯一方法是,你展示你尝试的代码,并准确解释代码发生了什么(包括精确的错误消息)。“这显然不会产生有效的JSON。”-不,这不明显。HTTP 404响应没有理由不包含JSON错误文档。顺便说一句,我在该页面上没有收到错误,您的演示片段为我打印了
[“lampent”、“chandelure”、“axew”]
。哦,奇怪,它仍然为我生成了一个404,就在中间那个页面上。我更新了两条评论的文本。@Dave,这回答了你的问题吗?你能留下一些反馈吗?
pokeapiPromise.push(
  fetch(url).then((res) => {
    if (res.status == 200) {
      res.json();
    }
    else{
      console.log("nope")
    }
  })
);