Javascript 向JSON RPC回调函数添加参数
注:为清晰起见编辑的问题2014年4月5日 我正在使用JSON RPC进行方法调用,该方法从服务器请求数据。当数据返回时,它会触发一个回调函数。JSON RPC回调函数是服务器自动提供的输出和异常参数。目前,我有一个函数,可以发出RPC请求、处理和显示数据。我希望将请求关注点与显示关注点分开,以便代码更易于重用。为此,我还需要将resultRegion id参数传递给回调函数 下面是一个当前功能性但结合在一起的代码示例:Javascript 向JSON RPC回调函数添加参数,javascript,callback,json-rpc,Javascript,Callback,Json Rpc,注:为清晰起见编辑的问题2014年4月5日 我正在使用JSON RPC进行方法调用,该方法从服务器请求数据。当数据返回时,它会触发一个回调函数。JSON RPC回调函数是服务器自动提供的输出和异常参数。目前,我有一个函数,可以发出RPC请求、处理和显示数据。我希望将请求关注点与显示关注点分开,以便代码更易于重用。为此,我还需要将resultRegion id参数传递给回调函数 下面是一个当前功能性但结合在一起的代码示例: function customerTable(inputField, re
function customerTable(inputField, resultRegion) {
var displayAccountTable = function(accounts, exception) {
if(exception) {
alert(exception.msg);
}
else {
var headings = ["Account ID", "First Name", "Last Name", "Balance"];
var rows = new Array();
for(var i=0; i<accounts.length; i++) {
var account = accounts[i];
rows[i] = [account.accountID, account.firstName, account.lastName, account.prettyAccountBalance];
}
var table = getTable(headings, rows);
htmlInsert(resultRegion, table);
}
};
var inputs = commaStringToArray(getRawValue(inputField));
rpcClient.rpcTester.getAccounts(displayAccountTable, inputs);
}
函数自定义表(inputField,resultRegion){
var displayAccountTable=函数(帐户,异常){
如果(例外){
警报(exception.msg);
}
否则{
var标题=[“账户ID”、“名”、“姓”、“余额”];
var rows=新数组();
对于(var i=0;i让我们从明显的基于闭包的方法开始:
function mk_displayAccountTable(inputField, resultRegion) {
return function (accounts, exception) {
if (exeption) return alert(exception.msg);
var headings = ["Account ID", "First Name", "Last Name", "Balance"];
var i, account, rows = [];
for(i=0; i<accounts.length; i++) {
account = accounts[i];
rows.push([account.accountID, account.firstName,
account.lastName, account.prettyAccountBalance]);
}
var table = getTable(headings, rows);
htmlInsert(resultRegion, table);
};
}
function customerTable(inputField, resultRegion) {
var inputs = commaStringToArray(getRawValue(inputField));
rpcClient.rpcTester.getAccounts(
mk_displayAccountTable(inputField, resultRegion),
inputs);
}
函数mk_displayAccountTable(输入字段,结果区域){
返回函数(帐户、异常){
if(exeption)返回警报(exception.msg);
var标题=[“账户ID”、“名”、“姓”、“余额”];
var i,科目,行=[];
对于(i=0;i您的问题非常令人困惑。我猜您希望将显示逻辑与请求逻辑分离。我提供了一个非常简单的基于闭包的答案来分离关注点。这就是您的意思吗?如果不是,您正试图排除哪些变量/表达式?是的,这正是我想要做的。很抱歉,我这有点让人困惑。我将给你一个测试的答案,看看它是否对我有效。如果有效,我将编辑这个问题,以便对未来的用户更有用。这正是我想要做的,谢谢。我对它做了一点修改,并将我的最终代码作为对上述问题的编辑发布。
function mk_displayAccountTable(inputField, resultRegion) {
return function (accounts, exception) {
if (exeption) return alert(exception.msg);
var headings = ["Account ID", "First Name", "Last Name", "Balance"];
var i, account, rows = [];
for(i=0; i<accounts.length; i++) {
account = accounts[i];
rows.push([account.accountID, account.firstName,
account.lastName, account.prettyAccountBalance]);
}
var table = getTable(headings, rows);
htmlInsert(resultRegion, table);
};
}
function customerTable(inputField, resultRegion) {
var inputs = commaStringToArray(getRawValue(inputField));
rpcClient.rpcTester.getAccounts(
mk_displayAccountTable(inputField, resultRegion),
inputs);
}