2017-01-26 4 views
1

Я использую прокси-сервер, библиотеку 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] и ждать их всех, чтобы выполнить мою логику.

Я ищу что-то подобное угловыми JS $q.all(q1,q2)

Любая идея, как я могу это сделать в VertX и службы прокси-сервер?

ответ

4

Обратитесь к разделу Async Coordination в документах. Если вы часто смешиваете разные источники событий вместе, вы также можете воспользоваться переключением на Vert.x API for RxJava.

Смежные вопросы