问题描述
我有一个返回 GenericResponse
的协程用例(api 调用),我试图从 rx java flatmap 调用它。期望 observable
为 GenericResponse
。
当我的用例返回 GenericResponse
时,我试图从不起作用的用例返回 Observable.just(it)
。我收到类型不匹配错误
我想将 UseCase 的 GenericResponse 转换为 Observable.just(GenericResponse(false))
我不确定这是否是正确的处理方式
请提出任何建议
这是我的平面图
subscriptions += view.startFuellingObservable
.onBackpressureLatest()
.doOnNext { view.showLoader(false) }
.flatMap {
if (!hasOpenInopIncidents()) {
launch {
withContext(dispatchers.IO) {
onStandUseCase(OnStandUseCase.Params("1","2",TimestampedAction("1",DateTime.Now()))) {
//RESPONSE IS GENERICRESPONSE WHICH I AM PLACING IN A OBSERVABLE
Observable.just(it)
}
}
}
}
else {
val incidentOpenResponse = GenericResponse(false)
incidentOpenResponse.error = OPEN_INCIDENTS
Observable.just(incidentOpenResponse)
}
}
.subscribe(
{ handleStartFuellingClicked(view,it) },{ onStartFuellingError(view) }
)
OnStandUseCase.kt
@PerApp
class OnStandUseCase @Inject constructor(
private val orderRepository: OrderRepository,private val serviceOrderTypeProvider: ServiceOrderTypeProvider
) : UseCaseCoroutine<GenericResponse,OnStandUseCase.Params>() {
override suspend fun run(params: Params) = orderRepository.notifyOnStand(
serviceOrderTypeProvider.apiPathFor(params.serviceType),params.id,params.action
)
data class Params(val serviceType: String,val id: String,val action: TimestampedAction)
}
用例协程
abstract class UseCaseCoroutine<out Type,in Params> where Type : Any {
abstract suspend fun run(params: Params): Type
operator fun invoke(params: Params,onResult: (type: Type) -> Unit = {}) {
val job = GlobalScope.async(dispatchers.IO) { run(params) }
GlobalScope.launch(dispatchers.Main) { onResult(job.await()) }
}
}
查看合同
val startFuellingObservable: Observable<Void>
这是错误信息
请提供有关如何解决此问题的任何建议
谢谢 R
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)