Saya telah melihat rx java 2 baru dan saya tidak begitu yakin saya mengerti idenya backpressure
lagi ...
Saya sadar bahwa kami memiliki Observable
yang tidak memiliki backpressure
dukungan dan Flowable
yang memilikinya.
Jadi berdasarkan contoh, katakanlah saya punya flowable
dengan 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 Flowable
pekerjaan katakanlah saya menempatkan onBackpressureDrop
operator, 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 backpressure
ketika saya dapat menggunakan polos Observable
masih menerima semua nilai tanpa mengelola buffer
? Atau mungkin dari sisi lain, keuntungan apa yang backpressure
saya dapatkan dari pengelolaan dan penanganan konsumsi?