0
私はRxJavaの初心者です。Observableの構築中にいくつかの困難があります。RxJava:1つのリクエスト - >整数のリスト - >各int - >結果に対するリストのリスト
私のタスクは次のとおりです。サーバーの応答でサーバーgetExpPointsIdArrayByHouse
- クエリ。
- int値ごとに、サーバーへの別のクエリを実行する必要があります。
Observable .defer(new Func0() { @Override public Object call() { try { return Observable.just(apiHttpClient.getExpPointsIdArrayByHouse(houseId)); } catch (IOException e) { e.printStackTrace(); return Observable.error(e); } catch (RightsException e) { e.printStackTrace(); return Observable.error(e); } } }) .flatMap(new Func1<RpcDeviceInfoResponse, Observable<Integer>>() { @Override public Observable<Integer> call(RpcDeviceInfoResponse rpcResponse) { if (rpcResponse.getResult().size() == 0) { errorReport(false, context.getResources().getString(R.string.error_while_getting_exp_points), ""); return null; } RpcDeviceInfoResponse.TaskListResult result = rpcResponse.getResult().get(0); return Observable.from(result.getResult()); } }) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<Integer>() { @Override public void onCompleted() { Log.v("onCompleted", "onCompleted"); } @Override public void onError(Throwable e) { Log.v("onError", "onError"); } @Override public void onNext(Integer integer) { Log.v("onNext", "onNext"); } });
を私はポイント3. Iで捕まってしまった:各クエリの結果は、オブジェクト「ExpPoint」
- 最終結果は、私がすでにやったexpPoints
のリストであります整数のリストがあり、それぞれ別々のクエリを実行する必要があります。
を使用することができます持って、私に関する限り、それはflatMap後にマップを使用することをお勧めします(返された値が観測ではありません)ありがとうございます! – crd
'doSomeQuery'が' Observable'を返していない場合は 'yes'を、代わりに' map'を使います。しかし、あなたはHTTPリクエストを作成しているので、あなたのサービスが 'Observable'を返すように[Retrofit](http://square.github.io/retrofit/)に移動してAPIを変更することを検討しているので、 – Pelocho