- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;DR 寻找有关使用 rx-kotlin 的强大离线支持的建议。
我关注了一个不错的 guide on offline-support in Android apps .它是这样工作的:
代码是:
Observable.mergeDelayError(
loadRemoteData()
.doOnNext { writeDataToLocalDatabase(it) }
.subscribeOn(Schedulers.io()),
loadDataFromLocalDatabase()
.subscribeOn(Schedulers.io())
)
不幸的是,这种方法依赖于始终有效的数据库代码。如果由于某种原因数据库操作失败,则一切都会失败,即使从远程服务器成功加载数据也是如此。
有没有一种方法可以使用 rx-kotlin/rx-java 实现以下目标?:
我想避免从 Internet 加载数据两次。如果重要的话,我正在使用房间 + 改造。
编辑:感谢@MinseongPark,我得到了下面的代码。mergeDelayError 仅在远程和本地源均失败时报告错误,并且如果 writeDataToLocalDatabase 方法失败(抛出异常),则不会阻止远程数据报告给 UI。 writeDataToLocalDatabase 中的错误信息通过远程报告保存。现在,该代码对于两个来源之一失败以及将新条目写入数据库失败的情况都很健壮。
return Observable.mergeDelayError(
loadRemoteData().doOnNext {
try {
writeDataToLocalDatabase(it)
} catch (error: Throwable) {
Timber.d(error)
Crashlytics.logException(error)
}
},
loadDataFromLocalDatabase()
)
.subscribeOn(Schedulers.io())
最佳答案
试试这个。
Observable.mergeDelayError(
loadRemoteData()
.doOnNext { runCatching { writeDataToLocalDatabase(it) } }
.subscribeOn(Schedulers.io()),
loadDataFromLocalDatabase()
.onErrorResumeNext(Observable.empty())
.subscribeOn(Schedulers.io())
)
关于android - 如何使用 rx-kotlin 实现强大的离线支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523262/
Stackoverflow JS Genius的! 我当前的项目有一个问题,它正在使用 Node 的HTTP createServer,并使用Formidable来解析主体数据。 请参阅下面的代码。
我正在尝试将文件上传到我的 NodeJS 服务器。我目前收到错误: 错误:错误的内容类型 header ,未知的内容类型:image/jpeg “image/jpeg”是有效的 MIME 类型,为什么
我有一个用作路由器的 Node.JS 服务器,可以向它发出 post 请求以上传文件,应该只允许 jpg/png/jpeg 扩展名我目前正在做的是: var form = new formidable
我正在使用https://github.com/felixge/node-formidable用于使用express上传文件。 虽然它工作得很好,但有一个问题:我有一个包含 9 个 type="fil
Haskell 的类型推理引擎比 Scala 的类型推理引擎强大得多。在 Haskell 中,我很少需要显式编写类型,而在 Scala 中,类型只能在表达式中推断,而不能在方法定义中推断。 例如,请参
我将 Superpowered 用于各种实时 FX,它们都非常简单。然而,音高变换是另一回事,我认为事实上是因为它基于时间拉伸(stretch)算法,当然必须处理随时间变化的输出,这比应用 EQ 或混
我正在使用mean stack 和formidable上传文件 表单具有 multipart/form-data 属性 exports.create = function(req, res) {
我正在尝试构建我的第一个 node.js 应用程序,但是,使用 node server.js 运行时,我收到以下错误消息: connect: multipart: use parser (multip
对于强大的 npm 包,当我使用 import * as formidable from "formidable" 时,我收到一条错误消息,指出 formidable({ multiples: tru
我注意到了 std::string str; str += 'b'; // works str.append('b'); // does not work str.append(1, 'b'); //
我有一个需要访问本地 FS 的 HTML/JS(YUI 框架)照片管理器。我应该将 HTML/JS 移动到 AIR,还是硬着头皮将其“移植”到 Flex AIR? 我知道营销说的是什么,但我想要真正的
我是一名优秀的程序员,十分优秀!