2015-02-25 16 views
24

Trong trường hợp nào tôi nên sử dụng doOnNext, và trong trường hợp nào doOnEach?RxJava: sự khác biệt giữa doOnNext và doOnEach

.doOnEach(new Action1<Notification<? super MessageProfile>>() { 
       @Override 
       public void call(Notification<? super MessageProfile> notification) { 

       } 
      }) 
.doOnNext(new Action1<MessageProfile>() { 
       @Override 
       public void call(MessageProfile profile) { 
        messageProfileDao.save(profile); 
       } 
      }) 

Có vẻ như cả hai nhà khai thác đều có cùng tác dụng.

Trả lời

35

Chúng thực sự khá gần. Một điều khác biệt (và có thể không rõ ràng trong javadoc thực sự, dễ thấy hơn trong mã nguồn) là trong doOnEach, bạn cũng nhận được các trình bao bọc Notification cho các lỗi và sự kiện hoàn thành.

Sau đó, bạn có thể kiểm tra isOnNext, isOnCompleted hoặc isOnError để kiểm tra loại sự kiện thực tế mà bạn nhận được thông báo.

Vì vậy, một Action.call để quy tắc tất cả, thay vì hoàn toàn chính thức Observer

Các vấn đề liên quan