【发布时间】:2017-11-11 11:28:03
【问题描述】:
是否有可能替换这个条件:
if (_file.exists) {
//rxjava post
}
else {
//another type of post
}
以下帖子的通用版本:
service.setSolicitation("Berlin", getString(R.string.api_key))
.subscribeOn(Schedulers.io())
// Read results in Android Main Thread (UI)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processError);
我真的不想重复自己,也不想使用 if 循环来避免空指针异常。有没有涉及 rx java 的花哨选项?
编辑
所以我的改造 API 接口上有两个 observables。
@POST("solicitation/create ")
Observable<Solicitation> createSolicitation(@Query("X-Authorization") String apiKey, @Body Solicitation solicitation);
和
@Multipart
@POST("solicitation/create")
Observable<Solicitation> uploadFileMap(
@Query("X-Authorization") String apiKey,
@PartMap() Map<String, RequestBody> partMap,
@Part MultipartBody.Part file);
为什么我有两个 observables 用于同一事物?因为如果文件存在,我使用一个,如果文件不存在,我使用另一个。
因此我需要使用条件if (_file.exists) 进行检查。
我想简化这一切,而不必处理多个 if 语句..(已经有一个来检查我们是否在线,如果不在线则添加到队列中)。所以我在嵌套 ifs,这太可怕了。
【问题讨论】:
-
我不清楚您要避免什么。条件似乎与您显示的示例 RxJava 调用无关。你能澄清一下吗?
-
我会更新以使其更清晰,请稍等。
-
@ScottW 好了,这样更好还是希望我添加更多细节?
-
谢谢,现在清楚多了。不幸的是,我不知道有什么奇特的解决方案,除了将逻辑抽象到一个单独的函数中,您可以从多个地方调用该函数。
-
你不是在找
Optional吗?
标签: android realm retrofit rx-java rx-java2