我有一个简单的程序,可以调用休息服务并显示输出。
问题是在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");
答案 0 :(得分:1)
我找到了一种有效的解决方法。
我可以看到问题是RESTfulWebServiceClient类的.find方法。行NetworkManager.getInstance()。addToQueue(req);创建对其余网络服务的异步调用,并在调用之前返回该方法。
为了解决这个问题,我在项目中重新创建了RESTfulWebServiceClient类,并从github复制了源代码。
然后我改变了
NetworkManager.getInstance()addToQueue(REQ);
到
NetworkManager.getInstance()addToQueueAndWait(REQ);
这会导致该方法在返回之前完成剩余调用。