日期:2014-05-16  浏览次数:20620 次

dwr回调函数不执行,有可能是什么原因?
项目中原有一些页面,需要大量读取数据,其中部分数据读取时间过长,导致整个页面载入缓慢,客户体验很不好。
后使用dwr 2.0,将读取时间长的那部分数据,延迟到页面加载之后,由onload触发,dwr调用后台读取类(只有1个,且未进行多线程控制),再次进行加载。
以此法修改几个页面,均运行正常。
但又修改了几个页面后,偶尔会出现dwr回调函数不执行的情况,查看日志后发现,后台读取类内容已读取完毕,只是回调函数未执行。且一旦出现此情况,只有重启服务,否则以此法延迟加载的数据均无法读出。但出现该情况时,其他功能均运行正常,调用其他dwr后台类的方法也能正常运行。
请问有可能是什么原因?

------解决方案--------------------
1、页面的engin.js和后台java函数的js又没有导入、顺序对不对、后台函数的js文件名和方法名称及dwr.xml配置中
的又没有对应。
2、后台的方法又没有配置dwr.xml中,配置对不对。
3、是否是异步交互而采用了同步读取数据方式,改成同步的看看
4、后台java方法又没有执行,又没有正确的返回值
1、2可以省略不看

------解决方案--------------------
那就和你传递参数有关了,Map<String,String>
相当于array中放object
[{key: value},{key2, "value"}]

------解决方案--------------------
那就监控下不执行情况下的参数,方法的信息,用调试工具调试下
------解决方案--------------------
感觉是dwr没处理好ajax并发请求时执行回调函数的问题。

在IE使用同一个xhr对象同时发送请求时,只会执行最后一次请求的回调,如果是ff则会出错