从 Vert.x 4.5.0 开始,
Vertx#rxExecuteBlocking
(以及返回 executeBlocking
的 Maybe
签名)已弃用。
我应该如何从 Vert.x
Future
(带有 Vertx#executeBlocking
)到 RxJava Maybe
(或 Observable
)?
这是一个选项,尽管我不确定它是最合适的:
您可以通过定义如下的方法从某些计算密集型活动(例如
Future
😉)获得 Vert.x Thread#sleep
:
private static final Vertx VERTX = Vertx.vertx();
private static Future<String> compute() {
return VERTX.executeBlocking(() -> {
Thread.sleep(1000);
return "Done.";
});
}
你可以获得像这样的
Maybe
:
final Maybe<String> maybe = MaybeHelper
.toMaybe(handler -> compute().onComplete(handler));
作为附加说明,我想指出,
Maybe
到Observable
的转换似乎可以使用Maybe#toObservable
轻松解决,因此允许以下方法从Observable
中获取
Vertx#executeBlocking
:
final Observable<String> observable = MaybeHelper
.toMaybe(handler -> compute().onComplete(handler))
.toObservable();