异步服务代理调用vertx

Asynchronous service proxy calls vertx

我正在使用 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 section in the docs. If you're often mixing different sources of events together you may also benefit from switching to the Vert.x API for RxJava