【发布时间】:2016-06-26 03:37:48
【问题描述】:
您好,我正在使用 RxJava 进行磁盘存储获取和设置操作。基本上我有这样的方法:
public Observable<String> getStorageItem(String id, String type) {
return Observable.defer(new Func0<Observable<String>>() {
// Run db operations to get storage item.
}
}
问题是这个方法getStorageItem(...) 有可能连续被订阅多次。并且 observable 中的数据库操作不能同时运行。我在这里最好的选择是什么?我应该手动创建某种排序吗?或者 RxJava 是否有某种工具可以让我阻止操作,直到前一个操作完成?
【问题讨论】:
-
实际上我认为我可以在我的所有 Db 操作中使用同步锁来解决这个问题。傻我。但是很想听听其他人对此是否有任何意见。
-
你可以看看
flatMap(Func1, int)是否符合你的需求(reactivex.io/RxJava/javadoc/rx/…)