Angular 中的 404 响应后如何继续循环?

How to continue loop after 404 response in Angular?

我查过你是否可以忽略 404 响应并继续你的循环,但我没有找到关于 Angular 的解决方案,所以我想在这里问这个问题。

我有以下代码:

  for(let order of orders){
      this.api.getURL(order.resource_url).then(data =>
          this.detail = data;
      );
      // Do something with this.detail ...
  }

如果请求 returns 一个 404 响应,循环应该转到下一个命令并检查请求 returns 是正确的响应还是再次出错。有人可以帮我吗?

当服务器响应 404 时,您收到异常。为避免它,您必须捕获该错误:

for(let order of orders){
  this.api.getURL(order.resource_url).then(data => {
    this.detail = data;
  }, error => {
    // error has been caught
  });
}

已更新

你很挣扎,因为你正试图以同步的方式使用异步 api :) 尝试过滤失败的响应,然后进行计算:

Promise.all(
 orders.map(order => this.api.getURL(order.resource_url).catch(() => null))
).then(responses => {
  const successfulResponses = responses.filter(response => response != null)
  for(let data of successfulResponses) {
    // your following code
  }
});

正如shumih所说,你必须捕获错误,在错误部分你可以调用continue;(直接跳转到下一个循环-运行),以确保它执行下一个运行 你的循环。 该行: this.detail = data 无论如何都不应该在您收到 404 时执行,因为没有返回承诺,所以它不会进入 then({}) 部分。