我有一个从很多来源获取项目的 observable:
Source { List<Item> data }
源和项目之间的关系是多对多的,并且在不同的源中,项目可能会自我复制。项目是应该上传到服务器的实体,服务器不接受重复项。为了实现这一点,我合并源并通过它们的 id 区分它们的项目,然后将唯一项目上传到服务器。如下所示:
Observable.merge(source1(), source2(), source3())
.flatMapIterable(sources -> sources)
.flatMapIterable(source::getItems)
.distinct(item -> item.getId())
.flatMapCompletabale(item -> uploadItem(item))
项目上传可能会发出几个错误,其中一些我应该稍后重试上传项目并继续另一个项目,而“失败”的项目正在等待重试。
我如何推迟重试上传“失败”的项目并继续其他项目,而这个项目正在等待它的尝试?
提前致谢!