将模型映射到嵌套 Maybe 中的实体
Map models to entities in nested Maybe
我有一个函数,它接受一个模型并将其映射到一个实体。这是实体被传递到另一个函数,returns 可能。
我不想运行主线程上的映射过程,所以我创建了一个嵌套的maybe。
//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)
})
此函数有效,但看起来不像干净的代码。如果您处理更大的数据,我还担心内存泄漏等问题。
有什么办法,如何改进这个方法?
感谢您的帮助。
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) }
我有一个函数,它接受一个模型并将其映射到一个实体。这是实体被传递到另一个函数,returns 可能。
我不想运行主线程上的映射过程,所以我创建了一个嵌套的maybe。
//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)
})
此函数有效,但看起来不像干净的代码。如果您处理更大的数据,我还担心内存泄漏等问题。
有什么办法,如何改进这个方法?
感谢您的帮助。
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) }