public class test()
{
public String getString()
{
return "test";
}
}
上面这个类很简单,里面的getString就直接返回一个字符串。
function test()
{
JTest.getString(callBackFun);
//回调函数
function callBackFun(data)
{
alert(data);
}
}
这里处理很简单,就是调用java类的方法,然后在回调函数中处理,上面那段话执行后会显示test,也就是java方法的返回值。但是,采用回家函数不符合我们的习惯,有些时候我们就想直接获取返回值进行处理,这时候就无能为力了。
我们知道,DWR是Ajax的框架,那么必然拥有了Ajax的特性了。
先来说说Ajax的运行原理吧,其实它的原理很简单,就是调用远端地址,获取页面返回数据,然后进行分析处理。而这个过程是异步的,就就是为什么DWR采用回调函数的原因了,而你不知道,我们调用了java类后,回调函数不知道什么时候执行。
XMLHttpRequest.open(String method,String URL,boolean asynchronous)
其中的asynchronous就是是否同步的参数了。
下面,我在DWR中封装出java类,如下:
function test()
{
var _data = "";
this.getString = function()
{
//设置成同步
DWrengine.setAsync(false);
JTest.getString(callBackFun);
//重新设置为异步方式
DWrengine.setAsync(true);
return _data;
}
//回调函数
function callBackFun(data)
{
_data = data;
}
}
上面这些写法比较麻烦,可以写成下面方式:
function test()
{
var _data = "";
this.getString = function()
{
//设置成同步
DWrengine.setAsync(false);
JTest.getString(function(data){_data = data;});
//重新设置为异步方式
DWrengine.setAsync(true);
return _data;
}
}
|
原文地址:https://www.jb51.cc/ajax/161504.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。