android - 将模型映射到嵌套的 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)
})
此功能有效,但看起来不像干净的代码。如果您使用更大的数据,我还担心诸如内存泄漏之类的事情。
有什么办法,我可以如何改进这种方法?
感谢您的帮助。
解决方案
完美的用例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) }
推荐阅读
- jquery - 如何使用 jquery ajax 在 laravel 中上传文件
- visual-studio-code - 在 Visual Studio Code 的 Latex 研讨会中启用 xelatex
- pandas - 如果数据框已经删除了缺失的行,如何检测缺失值?
- python - 包含列表python输出的html下拉列表
- android - AWS AppSync 错误 - 空对象引用上的 AWSMobileClientStore.get(String)
- gatsby - 如何通过 gatsby-transformer-asciidoc 从本地目录获取图像文件?
- python-3.x - 按日期分组到星期
- php - Docker配置虚拟域名错误,无法访问
- opendaylight - 醒酒器框架在 OpenDaylight Karaf shell 中无法按预期工作
- jquery - 自动完成选择名称并将 id 插入隐藏输入