ฉันได้ดู rx java 2 ใหม่และฉันไม่ค่อยแน่ใจว่าฉันเข้าใจความคิดของbackpressure
อีกต่อไป ...
ฉันรู้ว่าเรามีObservable
สิ่งนั้นที่ไม่มีbackpressure
การสนับสนุนและFlowable
นั่นก็มี
จากตัวอย่างสมมติว่าฉันมีflowable
กับ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
}
});
สิ่งนี้จะผิดพลาดหลังจากประมาณ 128 ค่าและเห็นได้ชัดว่าฉันใช้เวลาช้ากว่าการรับไอเท็ม
แต่เราก็มีเหมือนกัน 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
}
});
สิ่งนี้จะไม่ผิดพลาดเลยแม้ว่าฉันจะชะลอการใช้งานไปบ้างก็ยังใช้งานได้ เพื่อให้Flowable
ทำงานได้สมมติว่าฉันใส่onBackpressureDrop
ตัวดำเนินการความผิดพลาดจะหายไป แต่ไม่ได้แสดงค่าทั้งหมด
ดังนั้นคำถามพื้นฐานที่ฉันไม่สามารถหาคำตอบได้ในหัวของฉันคือเหตุใดฉันจึงต้องสนใจว่าbackpressure
เมื่อฉันสามารถใช้แบบธรรมดาObservable
ยังคงได้รับค่าทั้งหมดโดยไม่ต้องจัดการbuffer
? หรืออาจจะจากอีกด้านหนึ่งข้อดีอะไรที่ช่วยbackpressure
ให้ฉันสามารถจัดการและจัดการกับการบริโภคได้