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 中等待多个异步事件完成的干净方法 的相关文章

  • NoInitialContextException:heroku 战争部署

    我一直在开发一个 J2EE 项目 并且在其中使用连接池 也通过部署在 heroku 上的数据库进行访问 我使用以下代码来设置 Connection 对象 Context initContext new InitialContext Cont
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • Oracle Java 教程 - 回答问题时可能出现错误

    我是 Java 新手 正在阅读 Oracle 教程 每个部分之后都有问题和答案 我不明白一个答案中的一句话 见下面的粗体线 来源是https docs oracle com javase tutorial java javaOO QandE
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 埃拉托色尼筛法 - 实现返回一些非质数值?

    我用 Java 实现了埃拉托斯特尼筛法 通过伪代码 public static void sieveofEratosthenes int n boolean numArray numArray new boolean n for int i
  • 从 MS Access 中提取 OLE 对象(Word 文档)

    我有一个 Microsoft Access 数据库 其中包含一个包含 Microsoft Word 文档的 OLE 对象字段 我试图找到代码来检索保存在 OLE 对象中的文件 以便用户可以从我的 JavaFx 应用程序中的按钮下载它 但没有
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • 我可以在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