如何从GWT回调中获取变量

问题描述 投票:0回答:1

我正在尝试使用回调获取服务器变量的状态。显然,状态始终是

false
。如何从服务器获取状态?或者另一个问题,我必须从服务器端获取哪些选项?

    public static void testCallback(){
        AsyncServiceRegistry.getUserService().isState(new AsyncCallback<Boolean>() {
            @Override
            public void onFailure(Throwable caught) {}
    
            @Override
            public void onSuccess(Boolean result) {
                ApplicationContext.setState(result);
            }
        });

        boolean state = ApplicationContext.getState();
        if (state) {
            System.out.println(true);
            //do smth if true
        } else {
            System.out.println(false);
            //do smth if false
        }
    }
java gwt callback gwt-rpc
1个回答
0
投票

注意

Async
中的
AsyncCallback
:您正在对服务器进行异步调用,但您的代码正在尝试同步读取该值。在调用 onSuccess 或 onFailure 之前,还没有任何状态返回到服务器。

很久以前,浏览器支持对服务器的同步调用,但 GWT-RPC 从未支持过,并且浏览器已经删除了该功能 除了在 Web Worker 上运行时 - 页面本身永远无法执行您所要求的操作。

您可以追求的两个简短选项(但如果没有更多代码,很难提出具体建议 - 即“除了记录值之外,您打算用它做什么”):

  • 构建需要此服务器数据的代码,以确保该值已从服务器返回。例如,在调用 onSuccess 之前不要开始任何需要该值的工作(并确保也处理 onFailure 情况)。
  • 以某种异步模式(例如 Promise 或事件)保护服务器数据,以便需要该值的代码本身可以是异步的。
© www.soinside.com 2019 - 2024. All rights reserved.