Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2501438
  • 博文数量: 709
  • 博客积分: 12251
  • 博客等级: 上将
  • 技术积分: 7905
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-17 00:00
个人简介

实现有价值的IT服务

文章存档

2012年(7)

2011年(147)

2009年(3)

2008年(5)

2007年(74)

2006年(431)

2005年(42)

分类: Java

2006-12-20 14:43:08

传递额外的数据到callback函数

通常我们需要传递额外的数据到callback函数,但是因为所有的回调函数都只有一个参数(远程方法的返回结果),这就需要一些小技巧了。

解决方案就是使用Javascript的闭包特性。

例如,你的回调函数原本需要像这个样子:

function callbackFunc(dataFromServer, dataFromBrowser) { 
// 用dataFromServer和dataFromBrowser做些事情...... 
}

那么你可以像这个组织你的函数:

var dataFromBrowser = ...; 

// 定义一个闭包函数来存储dataFromBrowser的引用,并调用dataFromServer 
var callbackProxy = function(dataFromServer) { 
callbackFunc(dataFromServer, dataFromBrowser); 
}; 

var callMetaData = { callback:callbackProxy }; 

Remote.method(params, callMetaData);

(调用元数据在脚本介绍中有解释)

换句话说,现在你作为callback函数传递过来的不是一个真正的callback,他只是一个做为代理的闭包,用来传递客户端的数据。

你可以用更简介的形式:

var dataFromBrowser = ...; 
Remote.method(params, { 
callback:function(dataFromServer) { 
callbackFunc(dataFromServer, dataFromBrowser); 
} 
});
阅读(1519) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~