我正在将一个应用程序从RxJava 1迁移到2。我有这样一个代码:
RxJava 1
public Completable update() {
return client.fetchNotes()
.map(toNote())
.toList()
.doOnNext(save())
.toCompletable();
}
在上述代码中,
toList()
返回a
Observable<List<Note>>
.
现在,我正在尝试将该代码转换为RxJava 2:
RxJava 2
public Completable update() {
return client.fetchNotes()
.map(toNote())
.toList()
.doOnNext(save()) // <-- compilation error here
.ignoreElements();
}
在RxJava 2中,
toList()
返回a
Single<List<Note>>
,所以我不能锁链
doOnNext(save())
因为
doOnNext()
中不存在
Single<T>.class
.
如何在这两种情况下获得相同的行为?基本上,在
save()
方法,我正在存储
Note
在数据库中,它必须来自
List<Note>
;
Database
我使用的接口不允许逐个存储。这就是为什么我需要使用
toList()
:
interface Database {
void store(List<Note> notes);
}