RxJava如何在flatmap ResultSelector中直接返回值

问题描述

我有一个情况,我需要使用 flatmap 中的 resultSelector 来访问以前的 api 结果
黑色是流动
红色是依赖

enter image description here

完成任务的示例


    public static Single<byte[]> processData(){
        return Single.just(new byte[47]);
    }
    public static Single<Double> callAPI(int id,byte[] fileData){
        return Single.just(5.5);
    }
    public static Single<String> uploadData(String url){
        return Single.just("uploadResult");
    }

我的功能

    private void bigFunction(int id){

        processData().flatMap(new Function<byte[],SingleSource<Double>>() {
            @Override
            public SingleSource<Double> apply(byte[] bytes) throws Throwable {
                return callAPI(id,bytes);
            }
        },new BiFunction<byte[],Double,Single<String>>() {
            @Override
            public Single<String> apply(byte[] processedBytes,Double apiResult) throws Throwable {

                return uploadData("urlFromAPIResult")
                        .map(new Function<String,String>() {
                            @Override
                            public String apply(String s) throws Throwable {
                                return s+123;
                            }
                        });
            }
        })

这里的问题是 BiFunction 返回一个 Single 所以我需要订阅

   .subscribe(new SingleObserver<Single<String>>() { ...

我想要的

   .subscribe(new SingleObserver<String>() { ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)