Я использую текучие данные в своем методе и подписываюсь на них, чтобы получить результат.Мне нужно получить результат от метода подписки таким образом, чтобы я мог убедиться, что следующая инструкция в моем коде будет выполняться немедленно.
В моем коде я поместил следующую инструкцию сразу после метода подписки.Хотя я думаю, что он не будет работать синхронно.
override fun authenticate(route: Route?, response: Response): Request? {
var userForSave: User? = null
if(responseCount(response) >= 2) {
return null
}
userDao.getAll().map({ items -> items.first({ it.userName == user!!.userName} )})
.subscribe({ res -> userForSave = res })
// I need to make sure that the next instruction after subscribe is this
val tokenDto: TokenDto = TokenDto(token = userForSave!!.token, refreshToken = userForSave!!.refreshToken)
val refreshTokenCall = service.refreshToken(tokenDto)
val refreshResponse = refreshTokenCall.execute()
if(refreshResponse.isSuccessful) {
userForSave!!.token = refreshResponse!!.body()!!.token
userForSave!!.refreshToken = refreshResponse!!.body()!!.refreshToken
userDao.update(userForSave!!)
return response.request()
.newBuilder()
.header("Authorization", "Bearer ${userForSave!!.token}")
.build()
}
return null
}
Мне нужно убедиться, что я могу использовать «userForSave» для следующей инструкции.