如何找出读取ReadableStream错误关闭

时间:2019-01-29 14:20:24

标签: javascript fetch-api

我有此代码:

fetch('endpoint_url')
  .then(response => response.body)
  .then((response) => {
    const reader = response.getReader();

    reader.read()
      .then(({ done, value }) => {
        if (done) {
          console.log('DONE');
          return;
        }

       // use value
      })
      .catch(() => {
        console.log('Failed');
      });
  })
  .catch(() => {
    console.log('Failed');
  });

一段时间后,我得到net::ERR_SPDY_PROTOCOL_ERROR 200。 我进行了搜索,有人说这是某些杀毒软件的一个Chrome问题,但是我使用的是OSX,没有杀毒软件。

无论如何,我的问题是我想捕获错误并对此做出反应,但是console.log()都无效。

关于我应该如何做的任何想法?

2 个答案:

答案 0 :(得分:0)

要打印错误消息,首先需要捕获它。

代替

.catch(() => {
    console.log('Failed');
});

.catch((e) => {
    console.log('Failed: ' + e.message);
});

这将为您提供遇到错误的消息。

请注意:

  

任何给定的异常只会被最近的附件捕获一次   捕获块,除非重新抛出。当然,任何新的例外   在“内部”块中引发(因为catch块中的代码可能会   抛出的东西),将被“外部”块捕获。

答案 1 :(得分:0)

您没有看到错误,因为它发生在获取中。

尝试:

fetch('endpoint_url')
 .then(response => response.body)
 .catch(e => console.log(e))

但是我还是不相信您的代码的结构。在此处进行进一步分析:

Chaining promises with then and catch