我正在将应用程序从RxJava 1迁移到2.我有一个这样的代码:
RxJava 1
public Completable update() {
return client.fetchNotes()
.map(toNote())
.toList()
.doOnNext(save())
.toCompletable();
}
在上面的代码中,toList()
会返回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()
返回Single<List<Note>>
,因此我无法将doOnNext(save())
链接到doOnNext()
,因为Single<T>.class
在save()
中不存在}。
如何在两种情况下获得相同的行为?基本上,在Note
方法中,我将List<Note>
存储在数据库中,并且必须来自Database
;我使用的toList()
界面不允许逐个存储。这就是我需要使用interface Database {
void store(List<Note> notes);
}
:
public function beforeFilter(){
/* role_id, 0 is for doctor, 1 patients, 2 admin */
}
答案 0 :(得分:4)
由于Single
仅发出一个项目,因此它没有“下一个”或doOnNext()
运算符的概念。而是使用doOnSuccess()
。