2015-11-04 75 views
1

我想知道是否有一種方法可以使觀察者跳到訂閱操作員(沒有終止)。我的用例是,我有一個'loginClicked'可觀察(一個主題),我執行API調用,然後訂閱下一個事件。 API調用使用的承諾,我遇到任何錯誤,我裹在RxJS - 跳轉到訂閱

Promise.resolve(error) 

,這樣可觀察到的不終止(讓他們嘗試登錄再次使用相同的觀察到的(主題))來執行。

不過之前我打電話我想要做的使用

doOnNext() 

檢查互聯網連接的API。如果有連接,則繼續正常。但是,如果沒有任何東西,我想立即直接進入訂閱的onNext回調,傳遞一些'NoConnectivityError'。

有沒有什麼能幫助我解決這個問題還是我以錯誤的方式去解決問題?

謝謝。

UPDATE

例如:

this.loginClickedStream 
    .doOnNext(function() { 
     if (!connectedToWifi) { 
      //Skip to subscribe passing some data somehow 
      skipToSubscribe({error: 'NotConnectedToWifi'}); 
     } 
    }) 
    .flatMap(function() { 
     return fetch(url); 
    }) 
    .subscribe(function(response) { 
     if (response.error === 'NotConnectedToWifi') { 
     //Show alert 
     } else if (response.ok) { 
      //Display response in UI 
     } else { 
      //Show alert showing error 
     } 
    }); 

通知如何當用戶沒有連接到WIFI的可觀察到的是直接傳遞給訂閱方法。我希望更清楚。

+0

您可以加入你有什麼至今一個更完整的代碼示例?我不清楚你到底在做什麼。 – paulpdaniels

+0

我已經更新OP,我希望有所幫助。 – coldbuffet

回答

1

你可以做到這一點在flatMap,如下:

this.loginClickedStream 
    .flatMap(function() { 
     if (!connectedToWifi) { 
      return Rx.Observable.return({error: 'NotConnectedToWifi'}); 
     } else { 
      return fetch(url); 
     } 
    }) 
    .subscribe(function(response) { 
     if (response.error === 'NotConnectedToWifi') { 
     //Show alert 
     } else if (response.ok) { 
      //Display response in UI 
     } else { 
      //Show alert showing error 
     } 
    });