关闭

engine.js详解

2333人阅读 评论(0) 收藏 举报

   只要在DWR里用到马歇尔(marshall),engine.js是必须的.他生成了javascript函数的通用接口.
   所有DWR页面都需要下列的脚本元素来导入主要的DWR引擎.
   <script type='text/javascript'
     src='/[YOUR-WEB-APP]/dwr/engine.js'>
   </script>

   选项索引

   下列选项都是可行的.通过运用DWREngine.setX()函数来设置全局的或者运用{ timeout:500,

callback:myFunc}来设置调用或批调用.

      Option       Global          Batch           Call

     timeout       1.0              1.1              -
     errorHandler  1.0               -              1.1
     preHook       1.0              1.1             1.1
     postHook      1.0              1.1             1.1
     method        1.0              1.1              -
     verb          1.0              1.1              -
     async         1.1              1.1              -
     ordered       1.0               -               -
    warningHandler 1.0               -              1.1
     callback       -                -              1.0
    skipBatch      1.0*             2.0?             -
    onBackButton   2.0?             2.0?             -
   onForwardButton 2.0?             2.0?             -
   (*表示没有setSkipBatch(),而是用beginBatch()和endBatch()来控制的)


                            Errors, Warnings and Timeouts
                                      --Handling Errors and Warnings
  DWR总是会有一些错误,通过errorHandler,或warningHandler来显示错误信息.
  这些方法可以以弹出警告框,或状态提示的方式显示错误信息.
  用DWREngine.setErrorHandler(function)来提示错误,DWREngine.setWarningHandler(function)提示警告.
  Setting Timeouts
  DWREngine.setTimeout() 允许你为所有的DWR调用设置超时值(默认值是0),单位是毫秒.如果超时调用发生那么适当的错误处理就被调用.
  例子:
       Remote.method(params, {
         callback:function(data){ alert("it worked"); },
         errorHandler:function(message){ alert("it broke"); },
         timeout:1000
      });
      如果Remote.method()执行时间超过了1秒,那么就会显示"it broke".


                              Call Batching(批调用)
  你可以把远程调用组合起来作为批调用,这样就节省了往返于服务器间的时间,也很少涉及到延时了.  批调用由DWREngine.beginBatch() 开始,DWREngine.endBatch()结束.当调用了endBatch()时批远程调用就结束了.所以DWR就在服务器上执行他们一次. DWR确保了所有的回调被调用,所以你可以透明地返回批开启或结束.不要忘了调用endBatch() 否则你的远程调用将永远在队列里.
  警告:
     当然批调用是有副效应地,他不可能是同步地,也不能同时进行批调用. 所有地调用就像个钩子(hooks),比起单一的调用,批调用调用timeouts和errorHandlers的次数更多.  如果一个批调用中有两个不同timeout值的调用,那么所有至少是后一个将被忽略.


                                  Call Ordering(分类调用)
  只要AJAX的异步远程调用不能分类返回我们发送的东西的时候,DWREngine.setOrdered(boolean),(默认是false)允许我们请求我们发送的数据的精确分类.通过当老的请求完成时发送新的请求DWR能做到这点.

  警告:
     当为true的时候,你的应用会慢下来,如果信息丢失客户浏览器会反应迟钝.


                                 Remoting Hooks
  我们来看看DWREngine.setPreHook(function)和DWREngine.setPostHook(function).  如果你想在在DWR远程调用前被警告,你可以设置pre-hook函数.他会被无参地调用.这个Hook很有用,如果你想禁止某些组件在返回前被再次试用.  Post execute hooks 通常被用来和pre-execute hooks 一起协调工作,或取消由pre-execute hooks执行的修改. 了解他们请看DWRUtil.useLoadingMessage()函数


                                Remoting Options
  DWR怎样处理远程调用有很多选项,方法和动作能传输给用户,但是有不同的浏览器副作用.通常DWR会选择合适的方法给你,但是这些选项会有不必要的副作用.  DWREngine.setMethod(newmethod)这个方法不一定会被执行,我们只是首先来试试看.newmethod必须是DWREngine.XMLHttpRequest 或DWREngine.IFrame.DWREngine.setVerb(verb)允许你选择post或get为XMLHttpRequest和IFrame.一些浏览器不支持XHR-POST,DWR会切换到get,即使设置了post. DWREngine.setAsync(flag)我们想让XHR对象异步吗?默认是true.
                          警告:如果你用了iframes,这个可能会被忽略.不推荐设置为false,这会使你的浏览器慢下来,如果你必须这样做,那么请设置一个timeout.
 

 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4876次
    • 积分:70
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:1篇
    • 评论:2条
    文章分类
    文章存档
    阅读排行
    最新评论