Codename一个RESTfulWebServiceClient线程

时间:2016-12-06 09:45:14

标签: codenameone

我有一个简单的程序,可以调用休息服务并显示输出。

问题是在rest方法返回之前显示正在更新。

我试图使用invoke和block,但是.find方法似乎在它自己的线程中运行?异步

Sys输出是这样的;

System.out.println("Before");
userClient  = new RESTfulWebServiceClient("http://localhost:8080/MyService/api/person");

Display.getInstance () 
    .invokeAndBlock(() -> {
userClient.find(
            new Query().id("id"), rowset -> {
        for (Map m : rowset) {
            person = new JSONObject(m);
            System.out.println(person.getString("surname"));
        }
    }
}
System.out.println("After");

1 个答案:

答案 0 :(得分:1)

我找到了一种有效的解决方法。

我可以看到问题是RESTfulWebServiceClient类的.find方法。行NetworkManager.getInstance()。addToQueue(req);创建对其余网络服务的异步调用,并在调用之前返回该方法。

为了解决这个问题,我在项目中重新创建了RESTfulWebServiceClient类,并从github复制了源代码。

然后我改变了

NetworkManager.getInstance()addToQueue(REQ);

NetworkManager.getInstance()addToQueueAndWait(REQ);

这会导致该方法在返回之前完成剩余调用。