GWT/Java 中等待多个异步事件完成的干净方法

2024-01-11

在 Java 中等待多个异步回调函数完成然后再继续的最佳方法是什么?具体来说,我将 GWT 与 AsyncCallback 一起使用,但我认为这是一个普遍问题。这就是我现在所拥有的,但肯定有更干净的方法......

    AjaxLoader.loadApi("books", "0", new Runnable(){
        public void run() {
            bookAPIAvailable = true;
            ready();
        }}, null);
    AjaxLoader.loadApi("search", "1", new Runnable(){
        public void run() {
            searchAPIAvailable = true;
            ready();
        }}, null);


    loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>() {
        public void onSuccess(LoginInfo result) {
            appLoaded  = true;
            ready();
        }
    });

private void ready() {
    if(bookAPIAvailable && searchAPIAvailable && appLoaded) {
                // Everything loaded
    }
}

我在我的项目中编写了两个类来解决这个问题。基本上,每个单独的回调都会向父级注册。父级等待每个子级回调完成,然后触发它自己的handleSuccess()。

客户端代码如下所示:

public void someGwtClientSideMethod() {
    SomeServiceAsync someService = GWT.create(SomeService.class);
    ParallelCallback fooCallback = new ParallelCallback();
    ParallelCallback barCallback = new ParallelCallback();
    ParentCallback parent = new ParentCallback(fooCallback, barCallback) {
        public void handleSuccess() {
            doSomething(getCallbackData(1), getCallbackData(2));
        }
    };
    someService.foo(fooCallback);
    someService.bar(barCallback);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GWT/Java 中等待多个异步事件完成的干净方法 的相关文章

随机推荐

  • 我可以在Python中使用变量名“type”作为函数参数吗?

    我可以用吗type作为 python 函数参数的名称 def fun name type 你可以 但你不应该 使用内置函数的名称不是一个好习惯 因为它们会覆盖该范围内的内置函数的名称 如果您必须使用该词 请根据给定的上下文稍微修改它 虽然对
  • Spring Web 服务动态 wsdl 不为模式元素生成消息

    我有以下架构
  • Spring Boot 和 Spring Security 多个登录页面

    EnableWebSecurity public class MultiHttpSecurityConfig Configuration Order 1 public static class App1ConfigurationAdapte
  • 如何从 PhoneGapcamera.getPicture 获取 File 对象?

    这可能很简单 并且由 PhoneGap 的 相机 插件 文件 插件或 文件传输 插件中的某些功能组合涵盖 我了解用户可以选择一个文件 navigator camera getPicture function fileURI need hel
  • 使用 CONTAINS 的 SharePoint 列表 CAML 查询

    我尝试在 Web 部件中使用以下 CAML 查询来查询 SharePoint 列表 我已经在 U2U CAML 查询生成器和 Stramit CAML 查看器中测试了该查询 它工作正常 仅返回匹配的记录 但是当我在 Web 部件中使用它时
  • 如何让站点地图生成器完全抓取 SPA 的 Angular 路由器?

    我正在尝试为我的网页生成站点地图 在线站点地图生成器仅向我显示 xml 文件上的主页
  • Yesod/持久的 MongoDB 示例

    Haskell 和 Yesod 是新手 我一直在尝试遵循 Yesod 书 http www yesodweb com book persistent 中持久性章节中的与 Yesod 集成示例 Sqlite 编译并运行得很好 但是 我正在尝试
  • Safari 无法下载存折文件 .pkpass

    我在网页上有一个链接 用户可以通过该链接下载存折文件 但是当在 iPhone 上的 Safari 中单击该链接时 我收到以下错误消息 Safari cannot download this file 我在这里读过类似的问答 并且 MIME
  • 使用 Delphi 调用 Http POST url 最简单的方法是什么?

    受到问题的启发使用 Delphi 调用 Http GET url 最简单的方法是什么 https stackoverflow com questions 301546 whats the simplest way to call http
  • 我应该如何处理 wiki 页面内容中的自动链接?

    我所说的自动链接是指将页面内容中内嵌的 wiki 链接生成为页面超链接 如果存在 或创建链接 如果页面不存在 的过程 对于我正在使用的解析器 这是一个两步过程 首先 解析页面内容并从源标记中提取到 wiki 页面的所有链接 然后 在生成最终
  • 在闭包作用域中设置变量

    我想我明白为什么变量存在于声明它们的函数之外 因为您要返回另一个函数 myFunction function var closure closure scope return function return closure A myFunc
  • 当我按下后退按钮时,活动会发生什么?

    当我在活动 A 此处 LoginActivity 上并使用 Intent 转到活动 B 此处 MainActivity 并调用 finish 函数时 在意图函数之后 例子 if isloggedIn val intent Intent th
  • 收到错误“要替换的项目数不是替换长度的倍数”

    我正在尝试使用以下命令将记录转换为日期和时间格式strptime功能 但是 我不确定为什么会收到错误 要替换的项目数量不是替换长度的倍数 我尝试使用以下命令检查记录的长度length函数 但两者具有相同的长度 data lt DT head
  • Elasticsearch更新索引模板

    我有一个关于elasticsearch索引模板的问题 有一个我的问题的场景 为一系列索引创建一个模板 名为templateA 并且有一些从此模板创建的索引 名为Index yyyy mm dd2 and Index yyyy mm dd2
  • 在 C# XML 文档中,只有摘要标记有效

    我正在尝试为我的 VS 代码作业添加 XML 文档 但当将鼠标悬停在函数 变量上时 仅显示摘要块中的文本 它也发生在普通的 Visual Studio 和多 台计算机上 所以我认为这只是我不明白的事情 但我尝试用谷歌搜索它并没有得到任何结果
  • Go 中的构造函数

    我有一个结构 我希望用一些合理的默认值来初始化它 通常 这里要做的是使用构造函数 但由于 Go 并不是传统意义上的真正的 OOP 因此它们不是真正的对象 并且它没有构造函数 我注意到了 init 方法 但那是在包级别 还有其他类似的东西可以
  • db2 类型 4 驱动程序下载

    我想使用 java 应用程序连接到 Db2 数据库服务器 我使用 type4 驱动程序 您能告诉我下载 DB2 Type4 驱动程序的确切位置吗 提前谢谢 实际上推荐的方法是从您正在使用的 DB2 服务器获取它 因为它保证您获得它们的正确版
  • Reflection with Swift - 获取类的函数名称[重复]

    这个问题在这里已经有答案了 我想知道是否有办法获得一些有用的班级构成信息 例如 我发现能够访问类的所有可用函数非常有用 看来MyrrorType但这不是我要找的 我知道我可以使用获取函数名称 FUNCTION 但这并不正是我所需要的 我需要
  • 警告:POST 内容长度 90612004 字节超出了第 0 行未知中 8388608 字节的限制

    我收到这个错误 警告 POST 内容长度 90612004 字节超出了限制 第 0 行未知中的 8388608 字节 我做了一些搜索并改变了post max size and upload max filesize到 150M 并重置 Wa
  • GWT/Java 中等待多个异步事件完成的干净方法

    在 Java 中等待多个异步回调函数完成然后再继续的最佳方法是什么 具体来说 我将 GWT 与 AsyncCallback 一起使用 但我认为这是一个普遍问题 这就是我现在所拥有的 但肯定有更干净的方法 AjaxLoader loadApi