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();
  }
}