傳遞額外的數(shù)據(jù)到callback函數(shù)
通常我們需要傳遞額外的數(shù)據(jù)到callback函數(shù),但是因?yàn)樗械幕卣{(diào)函數(shù)都只有一個(gè)參數(shù)(遠(yuǎn)程方法的返回結(jié)果),這就需要一些小技巧了。
解決方案就是使用Javascript的閉包
特性。
例如,你的回調(diào)函數(shù)原本需要像這個(gè)樣子:
function callbackFunc(dataFromServer, dataFromBrowser) {
}
那么你可以像這個(gè)組織你的函數(shù):
var dataFromBrowser = ...;
var callbackProxy = function(dataFromServer) {
callbackFunc(dataFromServer, dataFromBrowser);
};
var callMetaData = { callback:callbackProxy };
Remote.method(params, callMetaData);
(調(diào)用元數(shù)據(jù)在腳本介紹中有解釋)
換句話說(shuō),現(xiàn)在你作為callback函數(shù)傳遞過(guò)來(lái)的不是一個(gè)真正的callback,他只是一個(gè)做為代理的閉包,用來(lái)傳遞客戶端的數(shù)據(jù)。
你可以用更簡(jiǎn)介的形式:
var dataFromBrowser = ...;
Remote.method(params, {
callback:function(dataFromServer) {
callbackFunc(dataFromServer, dataFromBrowser);
}
});