异步回调结束时gwt返回值

Łuk*_*zka 1 java gwt gwt-rpc

您好我有这样的功能:

    @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中执行:/此代码无法正常工作...因为您知道这是异步回调.

我怎样才能解决这个问题,我必须在回调结束后返回值.

app*_*tup 6

无法像您一样在方法中从异步调用返回值.这是"异步"调用的基本特性.你永远不知道什么时候会返回(网络/服务器延迟),因此你的代码执行不会等待!!!!!

不要从您的方法返回布尔值.而是让您的方法进行回调.

 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)