Codename One RESTfulWebServiceClient线程

问题描述:

我有一个简单的程序调用rest服务并显示输出。Codename One RESTfulWebServiceClient线程

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

我试过使用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"); 
+0

我认为这可能是原因? 。NetworkManager.getInstance()addToQueue(REQ); –

我已经找到一个可行的解决方法。

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

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

我再变

NetworkManager.getInstance()addToQueue(REQ)。

NetworkManager.getInstance()addToQueueAndWait(REQ)。

这会导致该方法在返回之前完成其余呼叫。

+0

断开链接.... –

+0

谢谢(该死的降价)。在我们的[网络服务向导](https://www.codenameone.com/how-do-i---access-remote-webservices-perform-operations-on-the-server.html)中,我们创建了两个版本方法同步和异步。 –