带有多个链调用的RxJava if/else



我有一个webservice调用,它返回一个对象,其中有一个参数指示操作是否成功结束,所以我想使用RxJava运算符在RxJava链内过滤它(有点像if/else语句(。有可能吗?

类似的东西,但不使用if/else:

repo.webserviceCall(username, password)
.flatMap(result -> {
if (result.isSuccessful())
repo.secondWebserviceCall(result.getInfo())
else
showToastMessage("Api call not successful"); //STOP FLOW HERE
})
.flatMap(result -> thirdWebserviceCall(res))
.subscribe(res -> {showSuccessMssg(res)}, throwable -> { showError(t)});

您可以从flatMap返回一个error(),以便执行转到订阅调用中的onError使用者。

如果每个服务调用都返回一个项,则可以重新排列运算符,这样不成功就不会为第二个和第三个调用运行flatMap。过滤器将设置为空,您可以使用onComplete处理程序来显示toast。

repo.webserviceCall(username, password)
.filter(result -> result.isSuccessful())
.flatMap(result ->
repo.secondWebserviceCall(result.getInfo())
.flatMap(result -> thirdWebserviceCall(res))
)
.subscribe(
res -> showSuccessMssg(res),
throwable -> showError(t),
() -> showToastMessage("Api call not successful")
);

相关内容

  • 没有找到相关文章

最新更新