2017-07-08 10 views
0

私は現在だけで正常に動作し、このメソッドを持っている:方法(CONCATを使用するRxJava2)

public static Observable<MyCustomObject> run(Service networkService) { 
    return Observable.concat(
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }) 
    ); 
    } 

それは何度も何度もちょうど同じ観測可能です。私はそうのようにそこに別のものを追加した場合:

public static Observable<MyCustomObject> run(Service networkService) { 
    return Observable.concat(
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }), 
     networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }) 
    ); 
    } 

私はconcat()下とreturn caseの下でちょうどcase部分に赤いラインを取得します。

誰でもこれに関するアイデアはありますか?

EDIT:私は質問タイトルを「なぜこれは動作しないのですか」から「これを動作させるにはどうすればよいのですか」を更新しましたか?私は本質的にconcat()でスティックしたい10個の観測点を持っており、おそらくもっと追加する予定です。だから、私には限界がないものが必要です。 concatedれるべき観測と

+1

でJavaを行っていない 'concat'はわずか4のソースすることができます。 – GVillani82

+0

@ GVillani82私は自分の状況で何ができるか考えています。私は約10の観測値を持っています。 'getThingOne()' ... 'getThingTen()' – EGHDK

+3

'concatArray'を使用してください。 – akarnokd

答えて

1

concat()受け入れ、Iterable<T>

public static Observable<MyCustomObject> run(Service networkService) { 
    ArrayList<Observable<MyCustomObject>> observables = new ArrayList<Observable<MyCustomObject>>(); 

    observables.add(networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     })); 
    observables.add(networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     })); 
    observables.add(networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     })); 
    observables.add(networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     }); 
    observables.add(networkService.getThingOne().map(response -> { 
      Request request = response.raw().request(); 
      MyCustomObject case = new MyCustomObject(request); 
      return case; 
     })); 

    return Observable.concat(observables); 
} 

恩赦任意の構文エラーが、私はしばらくの間

関連する問題