如何使用rxjs和promise处理错误?

时间:2019-05-28 12:02:27

标签: javascript node.js rxjs axios

我正在向后端api发送http请求。我特意将网址更改为返回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次,直到有数据为止。 map函数内部的逻辑更加复杂,但由于其无关紧要,我省略了其中的一些。

0 个答案:

没有答案