30dwr - engine.js 功能(选项说明)

简介: 30dwr - engine.js 功能(选项说明)

批量调用

你可以使用 batch 来批量的执行远程调用。这样可以减少与服务器的交互次数,所以可以提交反应速度。

一个 batch 以 DWREngine.beginBatch() 开始 ,并以 DWREngine.endBatch() 结束。当DWREngine.endBatch() 被调用,我们就结束了远程调用的分组,这样 DWR 就在一次与服务器的交互中执行它们。

DWR 会小心的处理保证所有的回调函数都会被调用,所以你可以明显的打开和关闭批处理。只要别忘了调用 endBatch(),否则所有的远程调用永远的处于列队中。

警告:很明显,把一些远程调用放在一起执行也会产生一些影响。例如不能在 batch 里面执行同步调用。

所有的元数据选项,例如 hooks, timeouts 和 errorHandlers 都在 batch 级别的,而不是单次调用级别上的。

所以如果一个 batch 中有两个调用设置了不同的超时,除了最后一个其他的都被忽略。

顺序调用

因为 Ajax 一般是异步调用,所以远程调用不会按照发送的顺序返回。DWREngine.setOrdered(boolean) 允许结果严格按照发送的顺序返回。DWR 在旧的请求安全返回以后才去发送新的请求。

我们一定需要保证请求按照发送的顺序返回吗?(默认为 false)

警告 : 把这个设置为 true 会减慢你的应用程序,如果一个消息丢失,浏览器就会没有响应。很多时候即

使用异步调用也有更好的解决办法,所以在用这一功能之前先好好考虑一下。

错误警告和超时

- 处理错误和警告

当因为一些原因调用失败,DWR 就会调用错误和警告 handler(根据错误的激烈程度),并传递错误消息。

你可以用这种方法来在 alert 窗口或状态来中显示错误信息。

你可以使用 DWREngine.setErrorHandler(function)来改变错误处理方式,同样通过

DWREngine.setWarningHandler(function)来改变警告处理方式。

-设置超时

DWREngine.setTimeout(),单次调用和批量调用级别的元数据选项,允许你设置一个超时值。全局的DWREngine.setTimeout()函数设置全局超时。如果设置值为 0(默认)可以将超时关掉。

setTimeout()的单位是毫秒。如果调用超时发生,错误处理器就会被调用。

-一个例子:

Remote.method(params, {
    callback:function(data) { alert("it worked"); },
  errorHandler:function(message) { alert("it broke"); },
  timeout:1000
});

如果 Remote.method()调用超过了 1 分钟还没有返回,"it broke"消息就会被显示。

远程调 Hooks

DWREngine.setPreHook(function) 和 DWREngine.setPostHook(function) 。

如果你想在 DWR 调用之前出现一个提示,你可以设置 pre-hook 函数。它将会被调用,但是没有参数传递到这个函数。当你希望让一些按钮在调用期间变灰来防止被再次使用,这一功能将会很有用。

post-hook 用来和 pre-hook 一起使用来逆转 pre-hook 产生的做的一些改变。

一个使用 pre 和 post hook 的例子就是 DWRUtil.useLoadingMessage() 函数。

远程调用选项

DWR 有一些选项用来控制远程调用的处理方式。method 和 verb 对于用户应该时透明的,但是不同的浏览器效果的可能不一样。一般来说 DWR 会选择正确方法来处理,但是这些选项对于在不同效果的浏览器之间开发很有用。

- DWREngine.setAsync(flag)

DWR1.0 不支持。

我们指定让 XHR 异步调用了吗? 默认为 true。警告如果你使用的时 IFrame 或者 ScriptTag 这一选项被忽略。一般来说把他变成 false 是个糟糕的做法。因为那样会使你的浏览器变慢。

要设置全局同步机制:

DWREngine.setAsync(true);

或者设置单次调用同步:

Remote.method(params, {
 callback:function(data) { ... },
 async:true
});

或者在 batch 里面:

DWREngine.beginBatch();
Remote.method1(params, callback1);
Remote.method2(params, callback2);
DWREngine.endBatch({
 async:true
});

- DWREngine.setMethod(newmethod)

用来设置恰当的方法。setMethod()不能把正使用你选择的方法,它只是保证首先尝试使用那个方法。

newmethod 必须是 DWREngine.XMLHttpRequest 或者 DWREngine.IFrame,或者 2.0 以后的DWREngine.ScriptTag。

XMLHttpRequest 时默认的,并且大多情况下可用。当 ActiveX 禁用 IFrame 就有用了,尽管 DWR能自动检测出这种情况并切换到 IFrame。当你要突破跨域调用的限制,ScriptTag 就很有用了。

例如,要设置全局的远程调用方法:

DWREngine.setMethod(DWREngine.IFrame);

或者设置单次调用同步:

Remote.method(params, {
 callback:function(data) { ... },
 method:DWREngine.IFrame
});

或者在 batch 里面:

DWREngine.beginBatch();
Remote.method1(params, callback1);
Remote.method2(params, callback2);
DWREngine.endBatch({
 method:DWREngine.IFrame
});

- DWREngine.setVerb(verb)

这个选项允许你选择 POST 和 GET,无论时用 iframe 还是 XMLHttpRequest 方法。一些浏览器(例如,

旧版的 Safari)不支持 XHR-POST 所以 DWR 就自动切换到 GET,即使你设置 POST 为 verb。所以setVerb()应当被仅仅做为一个堤示。

如果使用 ScriptTag 来远程调用,设置 verb 时没有的。

例如,设置全局远程调用的 verb:

DWREngine.setVerb("GET");

或者设置单次调用同步:

Remote.method(params, {
callback:function(data) { ... },
 verb:"GET"
});

或者在 batch 里面:

DWREngine.beginBatch();
Remote.method1(params, callback1);
Remote.method2(params, callback2);
DWREngine.endBatch({
 verb:"GET"
});

目录
相关文章
|
8天前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
1月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
37 5
|
1月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
27 2
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
JavaScript 前端开发 API
|
2月前
|
JavaScript API UED
vue.js怎么实现全屏显示功能
【10月更文挑战第7天】
53 1
|
2月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
2月前
|
JavaScript 搜索推荐
JS中的模糊查询功能
JS中的模糊查询功能
40 1
|
2月前
|
前端开发 JavaScript
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
59 0
|
2月前
|
JavaScript 安全 前端开发
js实现复制功能
js实现复制功能
22 0