首页 > 解决方案 > 将模型映射到嵌套的 Maybe 中的实体

问题描述

我有一个函数,它接受一个模型并将其映射到一个实体。这是实体被传递给另一个返回可能的函数。

我不想在 mainThread 上运行映射过程,所以我创建了一个嵌套的可能。

//Returns the id of the inserted exam
fun insertExamIntoDatabase(examModel: ExamModel): Maybe<Long> = Maybe.create { emitter ->
//Do heavy work like mapping objects
Thread.sleep(5000)
val entity = ExamMapper.toEntity(examModel)
examLocalSource.insertExam(entity).subscribe({
    emitter.onSuccess(it)
}, {
    emitter.onError(it)
})

此功能有效,但看起来不像干净的代码。如果您使用更大的数据,我还担心诸如内存泄漏之类的事情。

有什么办法,我可以如何改进这种方法?

感谢您的帮助。

标签: androidkotlinrx-java2

解决方案


完美的用例flatMap

fun insertExamIntoDatabase(examModel: ExamModel): Maybe<Long> = 
   Maybe.create { emitter ->
      //Do heavy work like mapping objects
      Thread.sleep(5000)
      emitter.onSuccess(ExamMapper.toEntity(examModel))
   }.flatMap { entity -> examLocalSource.insertExam(entity) }


推荐阅读