问题描述
我的实时数据有问题。当我想在竞争条件下在实时数据中设置值时,我的片段中没有观察到某些值。这是我的详细代码:
这是我的视图模型
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 (将#修改为@)