它的作用是让订阅者在接收到数据之前干点有意思的事情。假如我们在获取到数据之前想先保存一下它,无疑我们可以这样实现。
package com.netty.demo.vertx;
import io.reactivex.*;
import io.reactivex.functions.Consumer;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class RxJavaTest {
public static void main(String[] args) throws InterruptedException {
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
}
}).doOnNext(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
log.info("doOnNext:" + integer);
}
}).subscribe(new Consumer<Integer>() {
@Override
public void accept(Integer integer) throws Exception {
log.info(integer.toString());
}
});
Thread.sleep(300000000);
}
}
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - doOnNext:1
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - 1
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - doOnNext:2
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - 2
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - doOnNext:3
2021-02-23 17:16:13 [main] INFO c.n.d.v.RxJavaTest:accept - 3