`
Sev7en_jun
  • 浏览: 1227581 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
84184fc0-d0b6-3f7f-a3f0-4202acb3caf5
Apache CXF使用s...
浏览量:111477
社区版块
存档分类
最新评论

dwr异步改为同步

    博客分类:
  • JS
 
阅读更多

 

From: http://blog.csdn.net/javaactor/article/details/5486886
项目当中用到了DWR,在页面加载数据的时候出现了一点小问题: 调用了一个ajax的方法得到一组数据量比较大的对象.当然在页面上已经被convert成了js数组.在整个异步调用的过程当中花的时间要多一些.结果导致了一些数据显示了.一些数据没显示.对下一步操作产生了影响. 解决的方法是 
设置dwr的javascript:dwr.engine.setAsync(false); 将dwr的通信方式改成同步的.(既dwr会等待服务器.将数据接受完毕后.再继续进行.) 
javascript:dwr.engine.setAsync(false);的作用域.是当前的整个页面.既是javascript:dwr.engine.setAsync(false)在同一张页面上有用.既设置了以后这张页面上的所有dwr方法都是同步的. 但是其他的页面如果用到了dwr调用远程方法还是异步的.

 

具体测试:


在dwr中,由于请求都被封装起来了,就没有办法通过上面方法设置同步执行了。
解压dwr.jar,可以发现里面有engine.js,在它的里面有一个方法

DWREngine.setAsync = function(async) {
    DWREngine._async = async;
};

这个async默认值为true.

如果需要同步执行的话,就可以在执行的方法加上上面这个设置例如:

DWREngine.setAsync(false);//设为同步,等待getConfrimMessage数据返回在执行下一步
var _data = false;
Messages.getConfrimMessage(function(data){
    _data = data ;
});

alert(_data);
DWREngine.setAsync(true);//记得还原默认设置,要不然其他有用到dwr的地方也会变为同步

 由此可以看到,你如果不设置同步就会出现alert出来的数据总会是false,所以有同步一下就没问题了。

 

分享到:
评论

相关推荐

    DWR(包括engine.js+util.js).rar

    它支持异步和同步调用,提供了错误处理机制,并且能够自动处理数据类型转换,简化了前后端交互的过程。 `util.js`是DWR的工具库,包含了各种实用函数,帮助开发者更好地管理和优化使用DWR的应用程序。这些函数涵盖...

    dwr-src.zip

    - **异步与同步调用**:用户可以选择异步或同步方式执行远程方法。 - **错误处理**:DWR提供了统一的错误处理机制,方便调试和异常报告。 5. **学习与应用**: 研究DWR源码可以帮助开发者了解其内部实现,提高对...

    dwr 长连接

    **DWR(Direct Web Remoting...DWR的长连接功能为Web应用提供了实时性和互动性,通过优化的AJAX调用和反向Ajax推送,实现了高效的双向通信。了解并掌握DWR长连接的原理和使用,对于开发实时Web应用具有重要的实践意义。

    第22章__使用DWR框架.pdf

    DWR的远程调用通常是同步的,这与Ajax的核心异步特性有所不同。为了保持异步特性,DWR采用回调函数(callback())的方式:如果远程调用成功,则回调函数自动执行;若失败则不执行。 **示例:** 如图22-1所示,通过DWR...

    ext+dwr+spring案例

    这个案例中,EXT 提供了丰富的用户界面组件,DWR (Direct Web Remoting) 实现了浏览器与服务器之间的异步通信,而Spring框架则作为整个应用的依赖注入和管理核心。 EXT 是一个JavaScript库,它提供了大量的可定制的...

    spring+ext+dwr.rar_ext dwr_ext java_java 用户管理_spring e_spring ex

    总的来说,Spring+Ext+DWR的结合为开发者提供了一个高效、灵活的Web开发平台,使得我们可以快速构建出具有现代化用户界面和强大后台功能的应用。通过对这三个技术的熟练掌握和应用,开发者不仅可以提高开发效率,还...

    ajax动态树tree

    - **拖曳**:利用jQuery的draggable和droppable插件,用户可以拖动节点改变其在树中的位置,DWR同步更新数据库记录。 - **修改**:选中节点并编辑其属性,前端发送更新请求,服务器更新对应数据,然后返回更新后的...

    Ajax和j2ee开发的一个拍卖系统

    5. **DWR通信**:通过DWR,前端Ajax请求可以直接调用后台Java方法,实现快速的数据同步。 6. **安全性**:Spring的安全模块可以提供认证和授权机制,保护拍卖系统免受非法访问和攻击。 总结来说,这个拍卖系统利用...

    动态添加编辑拖拽的树形表格

    DWR允许在JavaScript和服务器端之间进行异步通信,实现实时的数据同步。开发者可能需要修改"TreeGridEditor"中的方法,以调用DWR服务,将前端的增删改操作同步到后台数据库中。 总的来说,实现"动态添加编辑拖拽的...

    ajax_transportation_methods.ppt

    - **DWR(Direct Web Remoting)**:允许Java和JavaScript之间直接进行远程调用,简化了服务器端和客户端的数据交换。 - **DOJO**:提供一套完整的前端开发工具,包括Ajax、DOM操作、动画效果等。 - **GWT(Google ...

    从小公司到大公司的面试题

    它将JavaBean对象远程化,使其在客户端JavaScript中可用,通过XMLHttpRequest对象实现异步调用,使得在JavaScript中可以直接调用服务器端的方法,提升了用户体验。 3. **Web Service**: Web Service是一种通过网络...

    Ajax.基础教程资料

    - **配置请求**:定义请求类型(GET 或 POST)、URL 和是否为异步请求。 - **发送请求**:将配置好的请求发送到服务器。 - **处理响应**:当服务器返回数据后,通过JavaScript代码解析这些数据并更新页面。 #### 二...

    开发Ajax总结

    传统的Web应用通常采用同步交互模式。在这种模式下,用户发起一个请求,服务器处理该请求后返回一个全新的HTML页面。这种方式的问题在于,用户需要等待服务器处理请求并返回结果,期间用户界面是不可用的,导致用户...

    某外企java笔试题

    2. 数据库连接与安全:为避免SQL注入,应使用`PreparedStatement`来执行包含用户输入的SQL查询,而不是`Statement`。关闭数据库资源如`ResultSet`,`Statement`和`Connection`时,推荐使用try-with-resources语句以...

Global site tag (gtag.js) - Google Analytics