异步服务代理调用顶点



我正在使用 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] 并等待它们全部执行我的逻辑。

我正在寻找类似于角度 js 的东西$q.all(q1,q2)

知道如何在 vertx 和服务代理中执行此操作吗?

查看文档中的异步协调部分。如果您经常将不同的事件源混合在一起,您还可以从切换到 Vert.x API for RxJava 中受益。

最新更新