如果先前的提取错误,如何停止执行提取?

时间:2019-08-15 10:42:48

标签: javascript fetch-api

我有以下代码

const result = fetch(`link`${id})
    .then(response => response.json())
    .then(data => {
      let link;
      if (data && data.url) {
        link = data.url.href;
      }

      return fetch(link);
    })
    .then(response => response.json())
    .catch(() => {
        //do something
    });

  result
    .then(data => {
      let link;
      if (data && data.url1) {
        link = data.url1.href;
      }

      return fetch(link);
    })
    .then(response => response.json())

我要致电const result = fetch('link')result.then取决于result的结果。

但是对于某些ids,原始的提取操作会返回错误,因此我正在做一些事情。

问题是我该如何在result处停止下一个,以便如果错误返回,将不会发出额外的请求? (因为此请求只会导致错误)

1 个答案:

答案 0 :(得分:0)

如果您可以在此时处理错误并且可以继续常规控制流程,请仅附加.catch处理程序。在您的情况下,您显然无法做到,所以请不要尝试!删除.catch()可以将其添加到链中某处的位置,因为它可以处理错误。

 const result = fetch(`url`).then(/*...*).then(/*...*/);

 const result2 = result.then(/*...*/);

 // Somewhere were result gets used, i.e. when adding it to the UI:
 result.then(console.log).catch(console.error);