io.reactivex.Single中不存在doOnNext()

时间:2018-02-02 12:32:38

标签: rx-java rx-java2

我正在将应用程序从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>.classsave()中不存在}。

如何在两种情况下获得相同的行为?基本上,在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 */

}

1 个答案:

答案 0 :(得分:4)

由于Single仅发出一个项目,因此它没有“下一个”或doOnNext()运算符的概念。而是使用doOnSuccess()