ฉันได้ดู 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ให้ฉันสามารถจัดการและจัดการกับการบริโภคได้

