2015-09-25 10 views
5

शायद मैं ऑपरेटरों का एक सरल संयोजन (या पूर्ण रूप RxJava का एक अंतर्निहित रद्द व्यवहार) की ओर मुख कर रहा हूँ। लेकिन मैं एक गर्म नमूदार selectedItem कि एक RxJava-JDBC प्रश्न के flatmaps है लगता है।RxJava- एक flatmap backpressure कैसे()

@Test 
public void testFlatMapBackPressure() { 
    Database db = null; //assign db 

    BehaviorSubject<Integer> selectedItem = BehaviorSubject.create(); 

    //can I backpressure the queries so only the latest one is running, and any previous is cancelled? 
    Observable<List<Integer>> currentValues = selectedItem.flatMap(i -> db.select("SELECT VALUE FROM MY_TABLE WHERE ID =?") 
      .parameter(i) 
      .getAs(Integer.class) 
      .toList()); 
} 

मैं flatMap() ऑपरेटर कैसे backpressure तो यह हमेशा ही नवीनतम क्वेरी को निष्पादित करेंगे (और किसी भी पिछले रद्द करें) कर सकते हैं। मैं एक तरह से चाहते हैं कुछ इस तरह करने के लिए एक backpressured flatMap ऑपरेटर, जहां "एक्स" पिछली क्वेरी

enter image description here

वहाँ यह पूरा करने का कोई तरीका है की एक रद्द करने को इंगित करता है? या यह पहले से ही पूरा किया जा सकता है और मैं सिर्फ यह नहीं दिखाई देता? जैसे आप switchMap() बजाय flatMap() जरूरत

उत्तर

6

लग रहा है।

एक समारोह है कि आप स्रोत नमूदार कि एक नमूदार रिटर्न द्वारा उत्सर्जित प्रत्येक आइटम की आपूर्ति को लागू करने, और उसके बाद से सबसे हाल ही में इन observables की उत्सर्जित उत्सर्जित आइटम उत्सर्जन करके एक नया प्रत्यक्ष देता है।

enter image description here