【发布时间】:2019-02-18 11:00:20
【问题描述】:
我在我的方法中使用 Flowable 数据并订阅它以获得结果。我需要以一种可以确保代码中的下一条指令立即运行的方式从 subscribe 方法获取结果。
在我的代码中,我将下一条指令放在订阅方法之后。虽然我认为它不会同步运行。
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”。
【问题讨论】: