【问题标题】:rxjs: switchMap ignores errorrxjs:switchMap 忽略错误
【发布时间】:2017-03-22 22:55:32
【问题描述】:

我不确定这是 rxjs 中的错误还是我遗漏了什么。当在 switchMap 返回一个抛出 observable 的错误时,主 observable 不会抛出该错误。

export class AppComponent {

    constructor() {
        this.doStuff();
    }

    doStuff() {
      Observable.of('any observable').switchMap(() => {
        return this.oops();
      });
    }

    oops() {
      return Observable.throw('doh');
    }
}

这里是一个笨蛋:https://plnkr.co/edit/f6dgGe3qvwX1Myn3PRfR

控制台中没有抛出错误。这是为什么?我以为switchMap 会用另一个“替换” Observable?

【问题讨论】:

  • 只要不订阅就不会出错...

标签: angular rxjs observable rxjs5


【解决方案1】:

在您订阅之前,Observable 链不会做任何事情。

doStuff() {
  Observable.of('any observable').switchMap(() => {
    return this.oops();
  }).subscribe();
}

oops() {
  return Observable.throw('doh');
}

注意,switchMap() 的投影函数可能会引发异常,并将作为error 通知发送。因此,您也可以只使用以下内容,结果将是相同的:

oops() {
  throw new Error('doh');
}

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2015-12-29
    • 2014-07-30
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多