您好我有这样的功能:
@Override
public boolean checkExist(String name) {
final boolean check[] = new boolean[] { false };
getAllRecordFromServer(new SearchCallback() {
@Override
public void onSearchResult(Map<String, Item> itemsMap) {
//do some action set true when map key equals name
check[0] = true;
}
@Override
public void onSearchError(XMLPacket error) {
// TODO Auto-generated method stub
}
});
return check[0];
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找解决方案并找到一些文章,但我不知道如何在gwt中执行:/此代码无法正常工作...因为您知道这是异步回调.
我怎样才能解决这个问题,我必须在回调结束后返回值.
无法像您一样在方法中从异步调用返回值.这是"异步"调用的基本特性.你永远不知道什么时候会返回(网络/服务器延迟),因此你的代码执行不会等待!!!!!
不要从您的方法返回布尔值.而是让您的方法进行回调.
interface MyCallback {
execute(boolean successfl);
}
public void checkExist(String name, MyCallback callback) {
getAllRecordFromServer(new SearchCallback() {
@Override
public void onSearchResult(Map<String, Item> itemsMap) {
//do some action set true when map key equals name
callback.execute(true);
}
@Override
public void onSearchError(XMLPacket error) {
}
});
}
Run Code Online (Sandbox Code Playgroud)