2017-04-18 4 views
5

मैं एक Maybe<> स्रोत और कुछ कार्रवाई है कि मैं इस मूल्य के साथ निष्पादित करने के लिए चाहते हैं hava अगर शायद खाली नहीं है:शायद completable को

// Maybe<T> maybe(); 
// Completable action(T value); 
return maybe().flatMapCompletable(val -> action(val)); 

लेकिन मैं completable 'पूरा' प्राप्त करना चाहते हैं जब शायद खाली है:

return Completable.complete(); 

यह स्विच कैसे करें: यदि शायद खाली नहीं है तो एक पूर्ण करने योग्य, अन्यथा कोई?

+0

यदि अन्य completable Completable.complete() है, तो आप कुछ भी करने को, मामले में हो सकता है कुछ भी उत्सर्जन नहीं होगा की जरूरत नहीं है (जबकि नहीं onError मिल) आप बस onComplete मिलेगा, यह है कि क्या आप चाहते हैं? – yosriz

+0

@yosriz हाँ, मैं खाली होने पर 'Completable.complete()' वापस लौटना चाहता हूं – g4s8

उत्तर

10

ठीक है, मैंने दो परीक्षण लिखे हैं, और मुझे लगता है कि आप जो व्यवहार चाहते हैं उसे बॉक्स से बाहर दिया गया है। होस्टटेस्ट saveToDb को कॉल किए बिना पूरा हो जाएगा। हो सकता हैस्टेस्ट 2 saveToDb को कॉल करेगा और मान को वापस और पूर्ण कर देगा।

@Test 
public void maybeTest() throws Exception { 
    Completable completable = Maybe.<Integer>empty() 
      .flatMapCompletable(o -> { 
       System.out.println(o); 

       return saveToDb(5); 
      }); 

    completable.test().await().assertComplete(); 
} 


@Test 
public void maybeTest2() throws Exception { 
    Completable completable = Maybe.just(5) 
      .flatMapCompletable(o -> { 
       System.out.println(o); 

       return saveToDb(5); 
      }); 

    completable.test().await().assertComplete(); 
} 

private Completable saveToDb(long value) { 
    return Completable.complete(); 
} 
संबंधित मुद्दे