gpt4 book ai didi

java - 使用参数中第一个 Observable 的结果将两个 Observable 与第二个 Observable 组合起来

转载 作者:行者123 更新时间:2023-12-02 01:59:19 28 4
gpt4 key购买 nike

我有两个方法返回 Observable< Response< ResponseBody >>

firstAPI.getFirstInfo("1", "2");

secondApi.getSecondInfo(resultFirstObservable, "3");

我正在尝试从第一个信息中获取信息并将其用作第二个信息中的参数。

我首先尝试使用 flatMap:

Observable<Integer> mergedObservers = firstAPI.getFirstInfo("1","2")
.flatMap((Response<ResponseBody> resultFirstObservable) -> {
try {
return secondApi.getSecondInfo(transformToTheFormatNeeded(resultFirstObservable.body().string()), "3");
} catch (IOException e) {
e.printStackTrace();
return secondApi.getSecondInfo("defaultValue", "3");
}
}, ((Response<ResponseBody> resultFirstObservable), (Response<ResponseBody> resultSecondObservable)) -> {
try {
return transformToWhatINeed(resultSecondObservable.body().string());
} catch (IOException e) {
e.printStackTrace();
}
});

然后我会尝试订阅这个新的 Observable,然后在 onNext 上我会将返回的值发送到我的 Activity。

Subscription sub = mergedObservers.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.repeatWhen(completed -> completed.delay(30, TimeUnit.SECONDS))
.subscribe(new Observer<Integer>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(Integer integer) {
view.updateInfo(integer);
}
});

我的问题是 flatMap 在编译时抛出 2 个错误:

  1. 错误:lambda 主体既不兼容值也不兼容 void

  2. 错误:找不到合适的方法flatMap((__)->{ tr[...]; } },(.. ,..)->{ [...]; } })

我做错了什么?

最佳答案

我认为 API 调用实际上不会抛出 IOException,同时还会返回 Observable。此外,您必须从第二个 lambda 返回一些内容,但那里的 try-catch 不会执行此操作,从而导致错误。试试这个:

Observable<Integer> mergedObservers = firstAPI.getFirstInfo("1","2")
.flatMap(resultFirstObservable -> {
return secondApi.getSecondInfo(resultFirstObservable, "3")
.onErrorResumeNext(e -> {
e.printStackTrace();
return secondApi.getSecondInfo("defaultValue", "3");
});
}, (resultFirstObservable, resultSecondObservable) -> {
try {
return transformToWhatINeed(resultSecondObservable.body().string());
} catch (IOException ex) {
ex.printStackTrace();
return "";
}
});

关于java - 使用参数中第一个 Observable 的结果将两个 Observable 与第二个 Observable 组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51881764/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com