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