Tôi đã xem xét rx java 2 mới và tôi không chắc mình hiểu ý tưởng của backpressurenữa ...
Tôi biết rằng chúng tôi có Observablemà không có backpressurehỗ trợ và Flowablecó nó.
Vì vậy, dựa trên ví dụ, giả sử tôi có flowablevới interval:
Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
Điều này sẽ gặp sự cố sau khoảng 128 giá trị và điều đó khá rõ ràng là tôi đang tiêu thụ chậm hơn so với việc nhận các vật phẩm.
Nhưng sau đó chúng ta có cùng với Observable
Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
Điều này sẽ không xảy ra sự cố nào cả, ngay cả khi tôi đặt một chút trì hoãn vào việc tiêu thụ nó vẫn hoạt động. Để thực hiện Flowablecông việc, giả sử tôi đặt onBackpressureDroptoán tử, sự cố đã biến mất nhưng không phải tất cả các giá trị cũng được phát ra.
Vì vậy, câu hỏi cơ bản mà tôi không thể tìm thấy câu trả lời hiện trong đầu là tại sao tôi phải quan tâm đến việc backpressurekhi tôi có thể sử dụng thuần túy Observablevẫn nhận được tất cả các giá trị mà không cần quản lý buffer? Hoặc có thể từ phía khác, những lợi thế nào backpressuremang lại cho tôi trong việc quản lý và xử lý việc tiêu thụ?

