rxjs:switchMap 忽略错误

rxjs: switchMap ignores error

我不确定这是 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 只会 'replace' Observable 和另一个?

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

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

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

请注意,switchMap() 的投影函数可能会抛出异常,并将作为 error 通知发送。所以你也可以只使用以下内容,结果是一样的:

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