Rx java 我有一个阻塞API,现在需要一个反应式组件。这是正确的实施方式吗?
这是我的阻塞方法签名Rx java 我有一个阻塞API,现在需要一个反应式组件。这是正确的实施方式吗?,rx-java,reactive-programming,Rx Java,Reactive Programming,这是我的阻塞方法签名 public void unmodifiableAPI(String foobar) { if( Condition.validate(foobar) == false ) { throw new RuntimeException(); } } 假设我的条件.validate()变为被动 public class Condition { public static Single<Boolean> validate(String foobar
public void unmodifiableAPI(String foobar) {
if( Condition.validate(foobar) == false ) {
throw new RuntimeException();
}
}
假设我的条件.validate()
变为被动
public class Condition {
public static Single<Boolean> validate(String foobar) { ... }
}
在一个玩具的例子中,这似乎对我有效,但我担心的是,在我订阅了这首单曲之后,我将无法再次使用它
我是否应该改为将其转换为未来版本,并从专用线程池运行它?您更新的方法将不再抛出RuntimeException,并可能导致Android应用程序崩溃。当
验证
尚未完成时,它也可能返回。您可以返回可能
并继续编写其他运算符。这个不可修改API
背后的大背景是什么?是的,你说得对。我得到的印象是,如果不在某个时候调用block(),在阻塞调用中处理反应对象是不可能的,这是一个很大的禁忌
public void unmodifiableAPI(String foobar) {
Condition.validate(foobar)
.filter(isOk -> !isOk)
.flatMap(isOk -> Maybe.error(new RuntimeException())
.subscribe();
}
}