2015-09-25 13 views
5

Belki de operatörlerin basit bir kombinasyonuna bakıyorum (ya da RxJava'nın tamamen iptal etme davranışı). Ancak, bir RxJava-JDBC sorgusuna ait düzlemleri gösteren, sıcak gözlemlenebilir bir selectedItem var. o DAİMA sadece en son sorguyu yürütmek (ve herhangi bir önceki iptal) böyleceRxJava- Nasıl bir flatmap() geri yüklemek için()

@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()); 
} 

nasıl flatMap() operatörünü karşı basıncı olabilir. Ben biraz böyle bir şey yapmak için bir backpressured flatMap operatörü, "X" önceki sorguda

enter image description here

bunu yapmanın bir yolu var mı bir iptal gösterir nerede istiyorsun? Ya da zaten başarılabilir ve ben sadece görmüyorum?

cevap

6

flatMap() yerine switchMap()'a ihtiyacınız olduğu gibi geliyor.

bir gözlemlenebilir döndüren gözlemlenebilir kaynak tarafından yayılan her öğenin tedarik bir işlevi uygulayan ve sonra en son bu gözlenebilirlerin yayılan yaydığı öğeleri yayan yeni gözlemlenebilir döndürür.

enter image description here

İlgili konular