我正在使用vertx的服务代理库,并且在回调过程中遇到了一些麻烦,我的用例是:
Q1-> Q2 ----> Q3,到目前为止我做的是:
insertOrUpdate(query, client, updateBuildingNode -> {
if (updateBuildingNode.succeeded()) {
userService.getUserbyId(user, getUserRes -> {
User currentUser = Json.decodeValue(getUserRes.result().get(0).toString(), User.class);
userService.removeNodeFromUser(new JsonObject().put("user", new JsonObject(Json.encode(currentUser))).put("nodeUid", buildingUid), removeNodeFromUserRes -> {
if (removeNodeFromUserRes.succeeded()) {
if(currentUser.getFavoriteBuilding()!=null && currentUser.getFavoriteBuilding().equalsIgnoreCase(buildingUid)) {
userService.removeNodeAsFavorite(new JsonObject().put("userUid", userUid).put("nodeUid", buildingUid), resultHandler);
}
else
{
resultHandler.handle(Future.succeededFuture(Boolean.TRUE));
}
} else {
resultHandler.handle(Future.failedFuture(removeNodeFromUserRes.cause()));
}
});
});
}
else {
resultHandler.handle(Future.failedFuture(updateBuildingNode.cause()));
}
});
我的问题是我想像Q1和Q2这样执行调用,以等待它们结束并运行Q3,还有另一个请求,我需要在Q [i]上循环并等待它们全部传递给我以执行逻辑。
我正在寻找类似于angular js
$q.all(q1,q2)
的东西知道如何在vertx和服务代理中执行此操作吗?
最佳答案
看看文档中的Async Coordination部分。如果您经常将不同的事件源混合在一起,则可能会从切换到Vert.x API for RxJava受益。