2016-05-10 2 views
0

Как следующий пример кода, если что-то истинное в flapMap, я мог бы проигнорировать некоторые преобразования и сразу запустить subscribe().как игнорировать некоторые преобразования в rxjava

Observable.just("10+20", "123", "10x20", "10") 
      .flatMap(new Func1<String, Observable<String>>() { 
       @Override 
       public Observable<String> call(String s) { 
        //if something true 
        //else continue next map 
        return null; 
       } 
      }) 
      .map(new Func1<String, String>() { 
       @Override 
       public String call(String s) { 
        //do something one 
        return null; 
       } 
      }) 
      .map(new Func1<String, String>() { 
       @Override 
       public String call(String s) { 
        //do something two 
        return null; 
       } 
      }) 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Action1<String>() { 
       @Override 
       public void call(String s) { 
        //end 
       } 
      }); 

Можно ли это сделать?

+0

Посмотрите на 'filter' оператора http://reactivex.io/documentation/operators/filter.html – Varun

ответ

0

Вы можете преобразование гнезда в flatMap оператора

Observable.just("10+20", "123", "10x20", "10") 
      .flatMap(new Func1<String, Observable<String>>() { 
       @Override 
       public Observable<String> call(String string) { 
        if (condition) { 
         return Observable.just(string); 
        } else { 
         return Observable.just(string) 
           .map(new Func1<String, String>() { 
            @Override 
            public String call(String s) { 
             //do something one 
             return null; 
            } 
           }) 
           .map(new Func1<String, String>() { 
            @Override 
            public String call(String s) { 
             //do something two 
             return null; 
            } 
           }) 
        } 
       } 
      }) 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Action1<String>() { 
       @Override 
       public void call(String s) { 
        //end 
       } 
      }); 
+0

может быть, это был ответ – 0Kai

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