Как узнать, что выборка ReadableStream закрыта по ошибке - PullRequest
0 голосов
/ 29 января 2019

У меня есть этот код:

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.Я искал об этом, и люди говорят, что это проблема хрома с некоторыми антивирусами, но я использую OSX, а не антивирус.

В любом случае, моя проблема в том, что я хочу перехватить ошибку и отреагировать на нее, но ни один изconsole.log() s работает.

Есть идеи, как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы не видите ошибку, так как она происходит при получении.

Попробуйте:

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

, но я все равно не убежден структурой вашего кода.Смотрите здесь для дальнейшего анализа:

Цепочка обещаний с then и catch

0 голосов
/ 29 января 2019

Чтобы напечатать сообщение об ошибке, сначала нужно его отловить.

вместо

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

do

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

Это даст вам сообщение об ошибке, с которым вы столкнулись.

Обратите внимание:

Любое данное исключение будет перехвачено ближайшим охватывающим блоком захвата только один раз, если оно не будет повторно выброшено.Конечно, любые новые исключения, возникающие во «внутреннем» блоке (потому что код в catch-блоке может делать то, что выдает), будут перехвачены «внешним» блоком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...