2016-05-18 5 views
0

Привет я новичок с RXJava, я пытаюсь работать на моем первом примере RxJava, что, как показано нижекак пронестись в rxjava

Observable<String> myObservable = Observable.create(
      new Observable.OnSubscribe<String>() { 
       public void call(Subscriber<? super String> subscriber) { 
        try { 
         Thread.sleep(1000); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
        subscriber.onNext("hello world"); 
        subscriber.onCompleted(); 
       } 
      } 
    ).subscribeOn(Schedulers.computation()); 

    Observable<String> myObservable1 = Observable.just("thank you"); 

    Observable observable3 = Observable.zip(myObservable, myObservable1, new Func2<String,String,String>() { 
     @Override 
     public String call(String o, String o2) { 
      return o+":"+o2; 
     } 
    }); 

    observable3.subscribe(new Action1<String>() { 
     @Override 
     public void call(String o) { 
      System.out.println("before"); 
      System.out.println(o); 
     } 
    }); 
System.out.println("after"); 

Я хочу напечатать before затем after, как я, чтобы сделать это с rxjava и без sleep

ответ

1

Один из возможных способов:

Observable<String> myObservable = Observable.create(
      new Observable.OnSubscribe<String>() { 
       public void call(Subscriber<? super String> subscriber) { 
        subscriber.onNext("hello world"); 
        subscriber.onCompleted(); 
       } 
      } 
    ).subscribeOn(Schedulers.computation()); 

    Observable<String> myObservable1 = Observable.just("thank you"); 

    Observable observable3 = Observable.zip(myObservable, myObservable1, new Func2<String,String,String>() { 
     @Override 
     public String call(String o, String o2) { 
      return o+":"+o2; 
     } 
    }); 

    Observable.just("before").concatWith(observable3).concatWith(Observable.just("after")).toBlocking().subscribe(new Action1<String>() { 
     @Override 
     public void call(String s) { 
      System.out.println(s); 
     } 
    }); 

Результат:

до
привет мир: спасибо
после

Смежные вопросы