error-handling - RxJS HTTP请求错误处理

标签 error-handling rxjs

在我的项目中,我使用RxJS处理HTTP请求。我对错误处理部分感到困惑,如下所示:

    .switchMap((evt: any) => {
      return http.getComments(evt.params)
        .map(data => ({ loading: false, data }))
        .catch(() => {
          console.log('debugging here');
          return Observable.empty();
        });
    })

在上面的代码中,在switchMap运算符内部,我使用http.getComments函数发送请求,该函数由我自己定义如下:
  getComments(params) {
    return Observable.fromPromise(
      this.io.get(path, { params })
    );
  }

在此函数中,我使用fromPromise运算符将返回的Promise转换为可观察的。

问题是当HTTP请求失败时,catch中的switchMap运算符无法工作,调试控制台无法输出。所以我的代码出了什么问题。

最佳答案

您是否真的需要在switchMap中捕获错误?您可以根据需要在源中处理错误。

.switchMap((evt: any) => 
    http.getComments(evt.params).map(data => ({ loading: false, data }))
})
.subscribe(console.log, console.error);

无论如何,您的源代码看起来没有任何错误,也许您的 promise 不会在http失败时被拒绝,而只是通过错误作为响应来解决(这是猜测,因为我之前已经看到过)

关于error-handling - RxJS HTTP请求错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428191/

相关文章:

error-handling - 自定义Liferay错误消息

RxJS 排队相关任务

rxjs - Rxjs 可观察订阅 - 按钮点击未捕获

javascript - ngrx 推迟生效的操作,直到调度另一个操作

javascript - 多个 API 请求

angular - 在订阅中初始化变量总是未定义的Angular rxjs

error-handling - 来自节点的Node-RED Handle错误,没有抛出标准异常

javascript - 如何在异步操作期间使 Express.js 记录错误

vue.js - 使用Vue CLI3.0创建多页应用程序,如何处理此错误?

r - 基于算法进行预测时出错