dwr 回调函数 高级用法 dwr 回调函数 多个参数

今天没什么任务,抽空看了下dwr官方的documentation,还是有收获的。

url:http://directwebremoting.org/dwr/documentation/index.html

其他部分我自己看懂了就不记了。简单记下回调函数的几个用法,备用。

声明:本文中的javadate为java.util.Date类。

1、基本的三种回调调用

a:   javadate.toString( { callback:function(str) { 

                  alert(str); 

}

});

b:  javadate.toString(function(str) { 

                  alert(str); 

});

c: javadate.toString( { callback:getValue});

      function getValue(str){

alert(‘time:’+str);

}

2、给回调函数传递其他参数

即回调函数需要处理服务器返回数据时还需要本地(浏览器侧)的一些数据,

这时候使用如下方法实现参数的传递。

var dataFromBrowser=’extra param’;

var callMetaData = { 

 callback:callbackFunction, 

 arg: dataFromBrowser //需要传递到回调函数的本地数据。

};

function callbackFunction(dataFromServer , dataFromBrowser ) {

 alert(dataFromBrowser +dataFromServer );//这里的dataFromServer 是从服务器传递回来的数据,dataFromBrowser是本地的数据

}

javadate.toString(callMetaData);

==========================

以上的代码也可以简写为

javadate.toString({ 

 callback:callbackFunction, 

 arg: dataFromBrowser

});

其实 这里还有其他配置项,为callbackArg 和exceptionArg 两项,

这里有规则,如果配置arg选项,则arg的参数同时传递到callback回调函数和异常回调函数,

如果配置callbackArg 和exceptionArg 则arg中配置的参数将会无效。

var callMetaData = {

callback:callbackFunction,

 arg: dataFromBrowser, 

 callbackArg: dataFromBrowser2,

 exceptionHandler: exceptionHandlerFunction

};

以上代码中因为配置了callbackArg配置项,所以覆盖掉回调函数的参数,

但是因为没有配置异常参数配置项,所以 arg: dataFromBrowser 等于把参数传递到

异常回调函数中。

3、2中传递参数的替代方案。

 JavaScript Closures,还没来得及看是什么东东,,先放上去再说,具体说明请看下文。

http://jibbering.com/faq/notes/closures/ 

var dataFromBrowser = …; 

 // define an erasure function to store a reference to

 // dataFromBrowser and to call dataFromServer

 var callbackProxy = function(dataFromServer) { callbackFunc(dataFromServer, dataFromBrowser);}; 

var callMetaData = { callback:callbackProxy }; 

 Remote.method(params, callMetaData);

=============================

等效代码

var dataFromBrowser = …; 

Remote.method(params, {

         callback:function(dataFromServer) 

            { 

                   callbackFunc(dataFromServer, dataFromBrowser); 

            }

 });

通过上面的代码可以看出,他是在回调函数里再调用函数,此时传递一个参数。

callback笔记就到这里了,继续学习。

javascript closure的中文资料。

http://www.zhuoqun.net/html/y2009/1203.html

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>