vertx future compose CompositeFuture
所属分类 vertx
浏览量 263
package dyyx;
import io.vertx.core.*;
public class FutureComposeDemo {
public static void main(String[]args)throws Exception{
Future< String> f = a("");
f.compose(FutureComposeDemo::b)
.compose(FutureComposeDemo::c)
.onSuccess(System.out::println)
.onFailure(e ->e.printStackTrace());
Future< String> fa = a("");
Future< String> fb = b("");
Future< String> fc = c("");
CompositeFuture.any(fa,fb,fc).onComplete(ar -> System.out.println(ar.result().list()));
fa = a("");
fb = b("");
fc = c("");
CompositeFuture.all(fa,fb,fc)
// .onComplete(ar -> System.out.println(ar.result().list()))
.onFailure(e -> e.printStackTrace())
.onSuccess( v -> System.out.println(v.list()));
}
private static Future< String> a(String str){
Promise< String> promise = Promise.promise();
doSleep(1000);
promise.complete(" a "+str);
return promise.future();
}
private static Future< String> b(String str){
Promise< String> promise = Promise.promise();
doSleep(1100);
promise.complete(" b "+str);
// promise.fail("b error");
return promise.future();
}
private static Future< String> c(String str){
Promise< String> promise = Promise.promise();
doSleep(1200);
promise.complete(" c "+str);
return promise.future();
}
public static void doSleep(long time){
try{
Thread.sleep(time);
}catch(Exception e){
//
}
}
}
c b a
[ a , b , c ]
[ a , b , c ]
b方法 返回错误时
promise.fail("b error");
io.vertx.core.impl.NoStackTraceThrowable: b error
[ a , null, c ]
io.vertx.core.impl.NoStackTraceThrowable: b error
上一篇
下一篇
vertx架构简介
CompletableFuture 例子
CompletionStage 说明
vertx future高级组合操作
vertx future 与 CompletionStage 互操作
vertx webclient 使用