dwr中同步执行的解决办法

来源:互联网 发布:脑子空空的 知乎 编辑:程序博客网 时间:2024/06/13 23:21

      Ajax,使用它可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的JavaScript、DHTML和与服务器异步通信的组合。

     ajax最令人激动地就是它的异步请求。当时,又时有需要同步请求的解决方案。

    对于普通的ajax请求。可以将

    req.open("GET", url, true);中的第三个参数设为false,就可以了。

   在dwr中,由于请求都被封装起来了,就没有办法通过上面方法设置同步执行了。

   解压dwr.jar,可以发现里面有engine.js,在它的里面有一个方法

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

    这个async默认值为true.

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

   DWREngine.setAsync(false);
 var _data = "" ;
 Messages.getConfrimMessage(function(data){
  _data = data ;
 });
 DWREngine.setAsync(true);

这样的话就会同步执行getConfrimMessage方法。执行以后,你就会发现尽管结果是正确的,但是还会弹出一个[object error]的警告。

 这就要了解engine.js中具体的执行顺序,找出问题究竟出现在那里。这个下次再说