Как обрабатывать ошибки, используя rxjs и обещания? - PullRequest
0 голосов
/ 28 мая 2019

Я делаю http-запрос к API бэкэнда. Я намеренно изменил URL-адрес, который возвращает 503, чтобы я мог правильно обрабатывать ошибки. Однако ответ об ошибке 503 здесь не возвращается .

const requestOptions = {
  url: "https://httpstat.us//503",
  method: "get",
  // raxConfig: retryConfig,
};

const $metrics = defer(() => from(axios(requestOptions))));

const metrics = await $metrics.pipe(
  map((val: any) => {
    if (val.data.metrics.length === 0) {
      throw val;
    }
    return val;
  }),
  retryWhen((errors) => errors.pipe(delay(2000), take(10))),
).toPromise();

console.log("metrics", metrics)

console.log в конце возвращает

не определено

Я ожидаю увидеть ответ на обещание http, которое является ошибкой состояния 503.


Контекст: я использую rxjs для обработки, когда нужно повторить http-запрос. Данные могут быть не готовы (длина === 0). Я повторяю до 10 раз, пока данные не появятся. Логика более сложна внутри функции карты, но я пропустил некоторые из них, поскольку она не имеет отношения к делу.

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