我是RxJS和觀察對象的新手,所以我仍然試圖圍繞正確的方式來做事情。導致嵌套觀察值的鏈式觀察結果
我有兩個功能:
functionRetrieveStuff() : Observable<MyObject> {}
functionDoStuff(param1: MyObject) : Observable<boolean> {}
RetrieveStuff的輸出是用於DoStuff輸入。
mainFunction() : Observable<boolean> {
return this.functionRetrieveStuff().map(response => {
return this.functionDoStuff(response);
})
}
這將導致以下編譯錯誤:我下面把這些從代替
Error:(33, 16) TS2322: Type 'Observable<Observable<boolean>>' is not assignable to type 'Observable<boolean>'.
類型「可觀察」是不能分配給輸入「布爾」。
如果我正確閱讀reactivex.io的文檔,我認爲我的問題的解決方案是switchMap。所以,如果更新我的mainFunction這樣:
mainFunction() : Observable<boolean> {
return functionRetrieveStuff().switchMap(response => {
return functionDoStuff(response);
})
}
的編譯錯誤消失,但是當我使用mainFunction在我canActivate後衛,當我嘗試使用的功能我得到一個錯誤:
TypeError: Cannot read property 'switchMap' of undefined
以下是我在我的canActivate後衛的canActivate方法使用mainFunction:
return this.mainFunction().first().map(result => {
return true;
});
所以我不知道如果我使用mainFunction不正確,或者如果我錯誤地調用它。任何洞察力將不勝感激。謝謝。
我沒有看到任何呼叫mainFunction在您的守衛。看起來你也忘了在調用functionDoStuff時使用'this'。發佈您的真實,實際的代碼來重現錯誤。不是其他一些模糊的代碼。 –
和'functionRetrieveStuff'代碼 –
對不起,我不能發佈完整的代碼,所以我試圖簡化它到什麼是需要說明我在做什麼。我更新了我的代碼。 –