Saya telah melihat rx java 2 baru dan saya tidak begitu yakin saya mengerti idenya backpressurelagi ...
Saya sadar bahwa kami memiliki Observableyang tidak memiliki backpressuredukungan dan Flowableyang memilikinya.
Jadi berdasarkan contoh, katakanlah saya punya flowabledengan 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
}
});
Ini akan crash setelah sekitar 128 nilai, dan itu cukup jelas saya memakan lebih lambat daripada mendapatkan item.
Tapi kemudian kita memiliki hal yang sama 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
}
});
Ini tidak akan macet sama sekali, bahkan ketika saya menunda untuk memakannya masih berfungsi. Untuk membuat Flowablepekerjaan katakanlah saya menempatkan onBackpressureDropoperator, crash hilang tetapi tidak semua nilai juga dipancarkan.
Jadi pertanyaan dasar saya tidak dapat menemukan jawaban saat ini di kepala saya adalah mengapa saya harus peduli backpressureketika saya dapat menggunakan polos Observablemasih menerima semua nilai tanpa mengelola buffer? Atau mungkin dari sisi lain, keuntungan apa yang backpressuresaya dapatkan dari pengelolaan dan penanganan konsumsi?

