如何将协程用例的响应与 rx observable 匹配

问题描述

我有一个返回 GenericResponse 的协程用例(api 调用),我试图从 rx java flatmap 调用它。期望 observableGenericResponse

当我的用例返回 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>

这是错误信息

enter image description here

请提供有关如何解决此问题的任何建议

谢谢 R

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)