2017-02-15 42 views
2

對於下面的打字稿(使用rxjs):有條件鏈觀察到

getRegularData(): Observable<MyData> { 
    return WS.loadRegularData(); 
} 

getAlternateData(): Observable<MyData> { 
    return WS.loadAlternateData(); 
} 

如何一種新的方法來實現,以滿足以下僞代碼:

getData(): Observable<MyData> { 
    // try to use getRegularData, and return observable for result. 
    // if getRegularData returns null, get data from getAlternateData() 
    // instead and return observable for result. 
} 

回答

5

有可以實現這個方法很多,一個將使用包含您的條件的switchMap:

getData(): Observable<MyData> { 
    return getRegularData() 
     .switchMap(data => { 
      if (data != null) { 
       return Observable.of(data); 
      } else { 
       return getAlternateData(); 
      } 
     }); 
}