想要异步的时候,想要同步的时候同步,在不同的情况下我们有不同的需求。dwr是ajax的服务器端框架,它封装了服务器端的调用,我们可以在JAVASCRIPT中直接调用服务器端的代码,完成想要的功能。
但是,由于AJAX是异步实现的,并且AJAX确实是为了异步的实现才引入近来的。但是,AJAX仍然也支持同步的调用。在纯粹的XMLHttpRequest中可以设置调用是否是异步的。XMLHttpRequest的open函数是有一个是否同步参数,如下:
XMLHttpRequest.open(String method, String URL, boolean asynchronous)
其中的asynchronous就是是否同步的参数了。
在DWR的engine.js文件,有setAsync方法,就是设置调用是否是同步的,还是异步的。
- DWREngine.setAsync(false);
- Property.validateCode(codeNum.Trim(),function(data)
- {
- if(data)
- {
- flag = true;
- }else{
- document.getElementById("msg").innerHTML="未输入验证码或输入的与验证码不一致";
- flag = false;
- }
- });
- DWREngine.setAsync(true);
上面这段代码就是设置DWR是同步返回的。
如果不同步返回的话,因为默认是异步的,所以没有等到AJAX返回,页面已经进行了操作,这样可能会导致结果与的发生很大的差别,因此必须先设置为同步。然后再执行异步调用: