java - RxJava 在第一个 Completable 之后但在返回下一个单曲之前更新数据
问题描述
我需要做的是进行一个可完成的调用(验证会话令牌),然后一旦完成,在下一个请求中更新会话令牌(返回最后一个调用,这是一个单一的)。
这是我到目前为止所拥有的,它可以完成这项工作,但它看起来很乱。必须有一种更清洁的方法来做到这一点?我正在寻找类似于 flatmap() 工作方式的解决方案,但我想返回最后一个单曲。
Single<ItemsResponse> getItems() {
return verifySessionBeforeApiRequest().andThen
(Completable.create(new CompletableOnSubscribe() {
@Override
public void subscribe(CompletableEmitter e) throws Exception {
nextRequest.setSession(getSessionId());
e.onComplete();
}
})).andThen(makeFinalCall(nextRequest));
}
解决方案
找到了更好/更清洁的解决方案。我没有返回一个 Completable 的 verifySessionBeforeApiRequest(),而是改变了我的思维过程并让它返回一个包含当前或新 sessionID(如果需要)的 Single。看起来像这样。
public Single<ItemsResponse> getItems() {
return verifySessionBeforeApi().flatMap(new Function<String, SingleSource
<? extends ItemsResponse>>() {
@Override
public SingleSource<? extends ItemsResponse> apply(String sessionId)
throws Exception {
return makeFinalCall(new nextRequest(sessionId));
}
});
}
推荐阅读
- ios - 快速导入嵌套结构
- c++ - 给定一个数组和整数 k 在每个大小为 k 的子数组中找到最大值
- android - Firestore 离线同步大量数据
- laravel - laravel 多次读取数据
- haskell - 如何将 Applicative 上下文添加到 Lens 的 MyDataType 预期的类型?
- react-native - 使用“react-native-navigation”进行导航
- javascript - 将txt文件导入模态体
- r - 在 r 中的数据集中注入异常值
- javascript - 有没有办法用全局变量循环这个?
- javascript - 将 HOC 与 react-navigation Navigator 一起使用