【发布时间】:2011-12-16 13:48:31
【问题描述】:
使用 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 事件之前,最好有一个简单的“正在加载...”消息。
【问题讨论】: