2017-03-22 133 views
1

我不確定這是rxjs中的錯誤還是我錯過了某些東西。當在switchMap中返回拋出可觀察值的錯誤時,主可觀測值不會拋出該錯誤。rxjs:switchMap忽略錯誤

export class AppComponent { 

    constructor() { 
     this.doStuff(); 
    } 

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

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

這裏是一個plunker:https://plnkr.co/edit/f6dgGe3qvwX1Myn3PRfR

沒有在控制檯拋出錯誤。這是爲什麼?我認爲switchMap只會將Observable替換爲另一個?

+0

不能有,只要你不訂閱是一個錯誤... – n00dl3

回答

2

在你訂閱它之前,Observable鏈不會做任何事情。

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

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

注意,這爲switchMap()投影功能可以拋出一個異常,它會被髮送作爲error通知。所以,你也可以只使用以下,結果是一樣的:

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

好,謝謝,現在我覺得愚蠢;( – user2170547