Используйте универсальную функциональность для выполнения вызовов API с использованием rxjava в сочетании с оператором плоской карты

#generics #retrofit #rx-java2 #flatmap

#общие #модернизация #rx-java2 #flatmap

Вопрос:

Мой интерфейс службы api:

 Observable <PlanResponse> getPlansRx(@Query string)
        (
                @Header("session-token") String session_token

        );
 

Мой ApiCall с использованием Rxjava:

 private < T extends BaseResponse > void execute( Function<T,Observable> function, ArrayList < T > arrayList, final IHttpCallBack< T > serverResponseCallBack ){
 Observable.fromIterable(arrayList)
                .flatMap(s->
                        function.apply(s)
                ).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<T>() {
                    @Override
                    public void onSubscribe ( @NonNull Disposable d ) {

                    }

                    @Override
                    public void onNext (T t ) {

                    }

                    @Override
                    public void onError ( @NonNull Throwable e ) {

                    }

                    @Override
                    public void onComplete ( ) {

                    }
                });
    }
 

}

На самом деле, когда я хочу создать вызов Api с помощью этого метода, я не знаю, как передать мой интерфейс Api service в качестве параметра моему методу вызова Api, потому что я должен вызвать этот метод с элементами ArrayList в качестве параметра, но, как вы можете видеть, это делается внутри метода executeRx и внутри flatMap.что должно быть сделаноЯ делаю?

       public void getPlans(ArrayList< Object > allCcPlans,  IHttpCallBack < PlanResponse > serverResponseCallBack ){
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            Function function = (Function) instance.getApi().getPlansRx("?");
           instance.executeRx(function,allCcPlans,serverResponseCallBack);
        }
    }
 

Что я должен поставить вместо вопросительного знака?

причина, по которой я настаиваю на создании этого метода, заключается в создании универсального метода для всех моих многопараллельных запросов.