我是新来的对象化,我不明白什么(愚蠢的事情)。
我正在构建一个restful web服务(使用restlet),并创建一个json响应。所以:
Party party;
for(Ref<Game> jref : party.games)
{
JSONObject object = new JSONObject();
try{
Game gAux = jref.get(); //If the value ref is not load, the excetion throws
}
catch(IllegalStateException e)
{
//Is asynchronous
jref = ObjectifyService.ofy().load().ref(jref);
}
serializeGame(jref.get(), object);
}
好的,代码非常简单,我得到一个游戏对象,然后将其序列化为json对象,然后发送响应。
但我不明白异步
load()
是如何工作的。如果
load().ref(jref)
是异步的:它会返回什么?因此,如果
load().ref()
返回空对象或“未来”对象:我用这个东西的时候发生了什么?(我使用空值对象?一个“还在等待”的物体?
我怎么知道东西准备好了?(一些听者,处理者?)使用它?
额外:如果没有任何方式知道对象何时准备好,如何加载ref synchronous?
谢谢
最佳答案
答案是:
https://groups.google.com/forum/?fromgroups=#!topic/objectify-appengine/8dLAbSWJVB4
“简短的回答”是ref/map/list是异步的外观,当您试图实现pojo时,它会同步阻塞。就像未来一样。