想要异步的时候,想要同步的时候同步,在不同的情况下我们有不同的需求。dwr是ajax的服务器端框架,它封装了服务器端的调用,我们可以在JAVASCRIPT中直接调用服务器端的代码,完成想要的功能。
但是,由于AJAX是异步实现的,并且AJAX确实是为了异步的实现才引入近来的。但是,AJAX仍然也支持同步的调用。在纯粹的XMLHttpRequest中可以设置调用是否是异步的。XMLHttpRequest的open函数是有一个是否同步参数,如下:
XMLHttpRequest.open(String method, String URL, boolean asynchronous)
其中的asynchronous就是是否同步的参数了。
在DWR的engine.js文件,有setAsync方法,就是设置调用是否是同步的,还是异步的。
上面这段代码就是设置DWR是同步返回的。
如果不同步返回的话,我去页面中的一个元素的值就取不到了,因此必须先设置为同步。然后再执行三个异步调用:
js 代码
- if(testProjectId != -2){
- DWREngine.setAsync(false);
- viewUtil.getTestedProjectLabelValueBeanByProject(handleResponser1, testProjectId);
- DWREngine.setAsync(true);
- }
上面这段代码就是设置DWR是同步返回的。
如果不同步返回的话,我去页面中的一个元素的值就取不到了,因此必须先设置为同步。然后再执行三个异步调用:
js 代码
- viewUtil.getAllModuleLableValueBeanById(handleResponser3, testedProjectId);
- viewUtil.getAllResolverListLableValueBean(handleResponser4, testedProjectId);
- viewUtil.getTestReportLabelValueBean(handleResponser2, testProjectId, testedProjectId);