GWT中的异步回调 - 为何最终?

时间:2011-03-12 20:41:37

标签: asynchronous event-handling final gwt-rpc

我正在GWT开发一个申请作为我的学士论文,我对此很新。我在互联网上研究过异步回调。我想要做的是:我想处理用户的登录,如果他们是管理员或普通用户,则显示不同的数据。

我的电话如下:

serverCall.isAdmin(new AsyncCallback<Boolean>() {
        public void onFailure(Throwable caught) {
            //display error
        }

        public void onSuccess(Boolean admin) {
            if (!admin){
                //do something 
            }
            else{
                //do something else
            }

        }
    });

现在,我见过的代码示例直接处理//做某事//部分的数据。我们与监督我的人进行了讨论,并且我认为我可以在成功时触发事件,并且当事件被触发时相应地加载页面。这是一个好主意吗?或者我应该坚持在内部功能中加载所有东西?让我对异步回调感到困惑的是,我只能在onSuccess函数中使用final变量,所以我宁愿不处理那里的东西 - 洞察力会受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:1)

它只是标准的java为什么你只能在内部类中使用Final变量。 Here is a great discussion discussing this topic



当我使用AsyncCallback时,我完全按照你的建议,我通过GWT的EventBus发起一个事件。这允许我的应用程序的几个不同部分在用户登录时做出响应。

答案 1 :(得分:1)

由于内部类/匿名函数是在运行时生成的,因此需要对其访问的变量进行静态内存引用。将final写入变量使其内存地址静态,将其置于安全的内存区域。如果引用类字段,也会发生同样的情况。