为什么我无法从第一个请求vert.x获得结果?

时间:2016-11-08 17:52:17

标签: java rest vert.x ussd

public class Ussd {

    private static Logger logger = LogManager.getLogger(Ussd.class);
    private  static  String query;

    public static void ussdMessages(RoutingContext routingContext){
        String codeService = routingContext.getBodyAsJson().getString("codeService");
        query=getServiceQuery(codeService);
        System.out.println("Query : "+query);
    }

    public  static String  getServiceQuery(String codeService){
        JsonObject params = new JsonObject();
        params.put("QUERY", Queries.DB_SELECT_SERVICE_QUERY);
        params.put("PARAMS", new JsonArray().add(codeService));
        System.out.println(params);
        DB.select(params, res -> {
            if (res.succeeded()) {
               query = res.result().getJsonArray("results").getJsonArray(0).getString(0);
                System.out.println(query);
            } else {
                query = res.cause().getMessage();
            }
        });
        return query;
    }
}

方法getServiceQuery返回我的确切结果并将其存入静态查询但在方法ussdMesages内调用后,它使用Postman从第一个请求返回null。对于第二个请求,它返回正确的结果。我不知道为什么。

1 个答案:

答案 0 :(得分:1)

您的[ { name : 'myName', dailyTasks : [ { date : '2016-01-01', task : 'task1' }, { date : '2016-01-02', task : 'task2' } ] } ] 方法执行异步工作(getServiceQuery),因此在您的情况下,您将在处理之前返回查询。将函数的返回类型从String更改为Future。

DB.select