vertx future高级组合操作
所属分类 vertx
浏览量 277
import dyyx.util.CommUtil;
import io.vertx.core.Future;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import java.time.LocalDateTime;
public class PromiseDemo {
static Promise< String> promise = Promise.promise();
static Vertx vertx = Vertx.vertx();
public static void main(String[]args)throws Exception {
Task task = new Task();
// 启动线程 sleep 1s 后 ,设置 promise 返回值 ,成功或失败
task.start();
System.out.println(LocalDateTime.now());
promise.future()
// promise 失败时调用 recover 操作,将错误替换为另一个值 ,相当于 catch
.recover(err -> Future.succeededFuture("recover from error"))
.map(String::toUpperCase)
.flatMap(str -> {
Promise< String> next = Promise.promise();
vertx.setTimer(2000, id -> next.complete("### " + str));
return next.future();
})
.onSuccess(System.out::println);
System.out.println(LocalDateTime.now());
// ### RECOVER FROM ERROR
// ### 2024-01-22T08:08:18.118
}
private static class Task extends Thread{
public void run(){
// sleep 1 s
CommUtil.doSleep(1000);
// 设置返回结果
promise.complete(LocalDateTime.now().toString());
// 设置异常
// promise.fail(new Throwable("error"));
}
}
}
上一篇
下一篇
CompletableFuture 例子
CompletionStage 说明
vertx future compose CompositeFuture
vertx future 与 CompletionStage 互操作
vertx webclient 使用
vertx core http 客户端 例子