rxjs:switchMap忽略错误

时间:2017-03-22 14:45:23

标签: angular rxjs observable rxjs5

我不确定这是rxjs中的错误还是我错过了什么。当返回在switchMap中抛出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只会“替换”#39; Observable与另一个?

1 个答案:

答案 0 :(得分:3)

Observable连锁店在您订阅之前不会做任何事情。

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

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

请注意,switchMap()的投影功能可以抛出异常,并将其作为error通知发送。所以你也可以使用以下内容,结果将是相同的:

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