2016-05-18 56 views
0

嗨,我是用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例子,我该怎么做工作与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); 
     } 
    }); 

结果是:

之前
hello world:谢谢
之后