GWT : best way to do an initial RPC call at startup?

标签 gwt rpc

在 GWT 启动时执行初始 RPC 调用的最佳方法是什么?

我想检索在用户加载页面时在服务器端动态生成的配置数据。但是如果我从浏览器执行异步 RPC 调用来检索数据,有时在页面完全加载之前我得不到响应,导致页面无法访问该配置数据。 (例如没有 Thread.sleep() 函数)

谢谢


感谢@Steve-J 的回复,我找到了解决方案...

基本上这个想法是这样的:

  • 创建一个新的 StartupCompleted 事件
  • 在 onModuleLoad() 中启动初始 RPC 调用
  • 在该 RPC 调用的 onSucess 方法中,触发 StartupCompleted 事件
  • 在 App Controller 的 go() 方法的末尾,而不是在 History 中插入默认操作 [ 使用 History.newItem("default"); ],或者如果通过书签调用时触发当前历史状态 [使用 History.fireCurrentHistoryState(); ], 什么都不做
  • 在事件总线上为新的 StartupCompleted 事件注册处理程序
  • 当 StartupCompleted 事件被触发时,捕获它并在那个时候,在历史记录中插入默认操作或触发当前历史状态

瞧瞧...

初始 RPC 调用在执行任何其他操作之前完成...

这种做法有什么问题吗?

请注意,正如@Tom-Miette 所建议的那样,在收到 StartupCompleted 事件之前,最好有一个简单的“正在加载...”消息。

最佳答案

您是否正在使用消息传递来控制流程?我执行 RPC 调用,成功后,我发送消息触发第一个事件弹出窗口供用户交互。失败时,将触发一条不同的消息,触发一个弹出窗口,告诉用户他无法继续。

不要忘记在弹出窗口上启用玻璃面板,这样用户在等待时就不会弄乱后台的任何东西。

更新: 来自评论:“但我的问题是用户可以为页面添加书签,并直接转到它而无需任何交互。我可能最终我没有收到 RPC 调用的结果,但是我正在生成他请求的页面。即使在那一代我尝试检查我是否收到了结果,我也不能暂停直到完成页面的生成。”

啊,我明白了。好的,GWT 对此有解决方案。你应该看看Activities and Places .当用户为“页面”添加书签时,他实际上是在为 GWT 应用程序的状态添加书签。当他返回到那个“页面”时,Activity 被触发并自动调用 start() 方法。这是您从服务器检索数据并执行所需的任何其他设置的机会。获得数据后,您的 start() 方法会继续设置所谓的“ View ”。从用户的角度来看,“页面”已“加载”。

关于GWT : best way to do an initial RPC call at startup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917432/

相关文章:

java - 无法添加两个标题面板

java - GWT 2.8 无法使自定义链接器工作

c++ - 使用 RPC 或其他方式

java - ZeroMQ 用于移动 Protocol Buffer 有效负载的替代方案是什么?

python - 是否有 web2py 远程过程调用的开源引用?

.net - 使用 .NET 获得快速 RPC 的最简单方法?

blockchain - 如何确定在RSK区 block 链上进行RSK交易确认的次数?

javascript - 从手写的 JavaScript 调用 GWT 方法

java - Amazon S3 从 GWT 应用程序上传

java - 使用哪种数据结构来存储登录用户?