我正在使用改造,我觉得 rxjava(带有 retrolambda)将非常适合以下流程:
- 获取小部件列表 (http)
对于每个小部件
a) 获取给定小部件类型的文章列表 (http)
b) 将所有这些保存到数据库
c) 获取列表中的第一篇(最新)文章并使用本文中的适当值更新 widget.articleName 和 widget.articleUrl- 转换回列表并完成
但是我不确定在步骤 2a 之后该怎么做。到目前为止,这是我的代码
apiService.getWidgets(token)
.flatMapIterable(widgets -> widgets)
.flatMap(widget -> apiService.getArticles(token, widget.type))
...
.toList()
.subscribe(
modifiedWidgets -> saveWidgets(modifiedWidgets),
throwable -> processWidgetError(throwable)
);
我玩过一些操作符,但是在链接时,我似乎总是把范围缩小得太远(例如,获得一篇文章的句柄),然后不再能够访问原始小部件来进行修改。
@GET("/widgets")
Observable<List<Widget>> getWidgets(@Header("Authorization") String token);
@GET("/articles")
Observable<List<Article>> getArticles(@Header("Authorization") String token, @Query("type") String type);