2015-06-13 10 views
19
से

मैं एक ही उत्पादन हो रही है जब बनाम Observable.from Observable.just का उपयोग कर निम्नलिखित मामले में:RxJava - बस बनाम

public void myfunc() { 
//swap out just for from here and i get the same results,why ? 
     Observable.just(1,2,3).subscribe(new Subscriber<Integer>() { 
      @Override 
      public void onCompleted() { 
       Log.d("","all done. oncompleted called"); 
      } 

      @Override 
      public void onError(Throwable e) { 

      } 

      @Override 
      public void onNext(Integer integer) { 
       Log.d("","here is my integer:"+integer.intValue()); 
      } 
     }); 

    } 

मैं बस गया था 'बस' लगता है सोचा एक आइटम फेंकना और 'से' किसी प्रकार की सूची में वस्तुओं को उत्सर्जित करना था। क्या फर्क पड़ता है ? मैंने यह भी ध्यान दिया कि 'बस' और 'से' केवल सीमित मात्रा में तर्क लेते हैं। तो Observable.just (1,2,3,4,5,6,7,8, -1, -2) ठीक है लेकिन Observable.just (1,2,3,4,5,6,7,8, -1, -2, -3) विफल रहता है। वही है, मुझे इसे एक सूची या सरणी में लपेटना है। मैं सिर्फ उत्सुक हूं कि वे असीमित तर्कों को परिभाषित क्यों नहीं कर सकते हैं।

अपडेट: मैंने प्रयोग किया और देखा कि 'बस' एक सरणी संरचना नहीं लेता है, यह 'बस' तर्क लेता है। 'से' संग्रह लेता है। तो 'से' के लिए निम्नलिखित काम करता है लेकिन 'बस' के लिए नहीं:

public Observable myfunc() { 

    Integer[] myints = {1,2,3,4,5,6,7,8,-1,-2,9,10,11,12,13,14,15}; 
    return Observable.just(myints).flatMap(new Func1<Integer, Observable<Boolean>>() { 
     @Override 
     public Observable<Boolean> call(final Integer integer) { 
      return Observable.create(new Observable.OnSubscribe<Boolean>() { 
       @Override 
       public void call(Subscriber<? super Boolean> subscriber) { 
        if(integer.intValue()>2){ 
         subscriber.onNext(integer.intValue()>2); 

        } 
       } 
      }); 
     } 
    }); 

} 

मैं इसे स्पष्ट अंतर मानता हूं, सही? एक List -

Observable.just(someList) आप 1 उत्सर्जन दे देंगे:

उत्तर

46

अंतर है जब आप प्रत्येक के व्यवहार को देखने जब आप इसे एक Iterable (उदाहरण के एक List के लिए) पास स्पष्ट होना चाहिए।

Observable.from(someList) आपको एन उत्सर्जन देगा - सूची में प्रत्येक आइटम।

just पर एकाधिक मानों को पारित करने की क्षमता सुविधा सुविधा है; निम्नलिखित कार्यात्मक रूप से समान हैं:

Observable.just(1, 2, 3); 
Observable.from(1, 2, 3); 
+7

इससे 45 मिनट भ्रम की मदद मिली। धन्यवाद! – Josh