如何解决为什么实时数据在竞争条件下没有观察到一些值?
我的实时数据有问题。当我想在竞争条件下在实时数据中设置值时,我的片段中没有观察到某些值。这是我的详细代码:
这是我的视图模型
class AuthNewviewmodel(
private val coroutinedispatcher: Coroutinedispatcher,private val authUseCase: AuthUseCase
): viewmodel() {
private val _sendCode = mutablelivedata<DataResult<SendCode?>>()
val sendCode: LiveData<DataResult<SendCode?>> = _sendCode
fun sendCode(req:CodeReq) {
viewmodelScope.launch(coroutinedispatcher) {
_sendCode.postValue(DataResult.Loading(true))
authUseCase.sendCode(req)
.flowOn(dispatchers.IO)
.catch { error ->
_sendCode.postValue(error.isError())
}
.onCompletion {
_sendCode.postValue(DataResult.Loading(false))
}
.collect { data ->
when (data.Meta?.code ?: 0) {
in 200..299 -> {
_sendCode.postValue(DataResult.Success(data.data))
}
else -> {
_sendCode.postValue(DataResult.ErrorMeta(data.data,data.errorData))
}
}
}
}
}
}
这是我想触发我的视图模式的时候
authNewVM.sendCode(
CodeReq(
phone = phoneOrEmail,channel = channel,type = Constants.AuthConstants.TYPE_SIGNUP
)
)
这是观察数据的时候
authNewVM.sendCode.observe(viewLifecycleOwner,Observer {
when(it){
is DataResult.Success -> {
Logs.d("result success")
}
is DataResult.Error -> {
Logs.d("result error")
}
is DataResult.Loading -> {
Logs.d("result loading ${it.isLoading}")
}
is DataResult.ErrorMeta -> {
Logs.d("result error Meta")
}
}
})
结果
result loading true
result loading false
查看一段时间未观察到状态成功,而我的视图模型设置为成功值..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。