我開發自己的下載用戶數據流,並有問題。 Buyt第一一些代碼,方法說明:錯誤後新單
loginManager.getAccessToken() //Returns Single<String> where string is my access token
loginManager.getRefreshToken() //Returns Single<String> where string is my refresh token
loginManager.downloadUserAccountData(String accessToken) //Returns Single<String> where string is my json response
loginManager.refreshAccessToken(String refreshToken) //Returns Single<String> where string is new access token
userManager.parseUserJson(String json) //Returns Single<User> where User is my user model
userManager.storeUser(User user) //Returns Completable
目前我doning類似的東西:
Completable getAndStoreUserData = loginManager.getAccessToken()
.flatMap(loginManager::downloadUserAccountData)
.flatMap(userManager::parseUserJson)
.flatMapCompletable(userManager::storeUser);
但是,這並不支持,刷新訪問令牌,然後重試下載。臺服務器上拋出403
當我accessToken
不是最新的,所以我在那種情況下,我的函數返回錯誤downloadUserAccountData
現在我曾嘗試使用doOnError()
和onErrorReturn()
但兩者本operartors都不滿足我的要求。這是因爲doOnError()
只允許例如顯示Log
並且不返回任何東西。 onErrorReturn()
讓我只返回價值而不是Single<Value>
。
這是僞代碼我想實現:
Completable getAndStoreUserData = loginManager.getAccessToken()
.flatMap(loginManager::downloadUserAccountData)
.onErrorReturn(error -> loginManager.getRefreshToken()
.flatMap(loginManager::refreshAccessToken)
.flatMap(loginManager::downloadUserAccountData)
.flatMap(userManager::parseUserJson)
.flatMapCompletable(userManager::storeUser);
任何實例讚賞:)
你使用改造? – Cochi
@科奇不,我不知道。我不能在這個項目中使用Retrofit :( –