模式 + GWT + Ajax = 易用性
2009-09-12 00:00:00 来源:WEB开发网CitiesGridWithCacheAndPreFetchingAndTimer 类演示这个模式。私有的 TimedCitiesDisplay 类扩展 Timer 类。在构造时,它接收一个城市列表并初始化一个迭代器;它还保存当前的国家、地区和页面,以便在以后检查是否必须继续处理。run() 方法处理一批城市;如果还有更多的城市,它会调度下一次运行,下一次运行从原来停止的位置开始继续处理,如图 5 所示。
图 5. 在处理过程期间显示城市(一些城市还没有装载)
图片看不清楚?请点击这里查看原图(大图)。
为了让这个解决方案工作顺畅,要研究每一步可以执行的最大工作量和各步之间的时间间隔。如果采用大量短步骤,那么计算机的响应性更好,但是也意味着要等待更长时间才能得到所有数据。但是,如果步骤长,可能导致 “busy script” 消息,这也不好。必须通过试验找到最佳折衷点。
GWT 自己的延期命令
延期命令(Deferred command) 是 GWT 特有的特性,它可以提供更好的解决方案。延期命令排队等待,当处理器空闲时执行,见清单 6。解决方案:把处理划分为短的步骤,但是用延期命令替代 Timer。GWT 会决定什么时候运行下一个计算步骤。
清单 6. 用延期命令模拟线程
define a class that extends IncrementalCommand:
define attributes so it can save its parameters
define attributes so it can save local variables from run to run
define attributes so it can save form field values
on construction:
save the received parameters
initialize local variables for the process
save the current form field values
display a "loading" message
execute() method:
if the current form field values match the saved values:
execute some process, updating the local variables
if there's still more work to be done
return true, so it will run again shortly afterwards
otherwise,
return false (the job is done)
otherwise,
return false (situation changed)
whenever you want to simulate a thread with a deferred command:
create an object of the new class above, with appropriate parameters
use the addCommand() to add your new object to the processing queue
CitiesGridWithCacheAndPreFetchingAndDeferredCommands 类演示这个模式。它与计时器解决方案的主要差异是命令排队等待,如果必须把处理发送回队列等待下一次运行,那么 execute() 方法返回 True。
这个解决方案比计时器解决方案灵活,因为如果用户不做任何事情,它会全速运行,同时不会影响计算机的响应性。但是,不要做得太过分。
结束语
本文讨论了一些设计模式,它们通过在后台使用 Ajax 技术提高 GWT 应用程序的速度。提供了一些解决方案来克服常见的 JavaScript 限制(比如缺少线程),降低向服务器请求数据时的时间延迟(通过预抓取、缓存和在客户机本地预检验)。GWT、Ajax 和一些模式有助于提高应用程序的速度,增强它的易用性,为用户提供响应性更好的网站。
本文示例源代码或素材下载
- ››Ajax 实现静态刷新页面 带加载旋转图片
- ››ajax中获取和发送二进制数据的方法
- ››模式作用域:初级读本和最佳实践
- ››ajax调用后台页面怎样区别ID
- ››Ajax+jQuery实现LightBox与服务器通信
- ››AJAX中利用javascript的split函数处理responseTex...
- ››AjaXplorer 2.6.1 发布,远程文件管理
- ››AJAX + SVG 实现实时监控图表
- ››AJAX 及使用 E4X 编写 Web 服务脚本,第 2 部分:...
- ››AJAX也有安全隐患 谈谈AJAX的安全性
- ››ajax+asp.net+mssql无刷新聊天室
- ››AJAX中文问题[转]
更多精彩
赞助商链接