在javascript中,如何将两个函数作为参数传递,这两个函数都可以是可选的

在javascript中,如何将两个函数作为参数传递,这两个函数都可以是可选的,javascript,function,parameters,Javascript,Function,Parameters,我想建立一个灵活的小型API,为客户端的后端。为了在使用默认的成功/错误处理程序或编写自己的处理程序时提供一些便利,我计划支持用户选择向两个处理程序传递一个或无。我试了以下方法 后端的“API”文件片段: 客户端代码的文件片段 SomerPCall将由另一个文件中的函数间接调用: someFunctionRPCcall("bla", null, errorHandler); 而searchWordOccurrenceRPCcall正在调用someRPCcall 上面的failureHandle

我想建立一个灵活的小型API,为客户端的后端。为了在使用默认的成功/错误处理程序或编写自己的处理程序时提供一些便利,我计划支持用户选择向两个处理程序传递一个或无。我试了以下方法

后端的“API”文件片段:

客户端代码的文件片段

SomerPCall将由另一个文件中的函数间接调用:

someFunctionRPCcall("bla", null, errorHandler);
而searchWordOccurrenceRPCcall正在调用someRPCcall

上面的failureHandler将是一个自定义处理程序,但也可以进行以下调用:

someFunctionRPCcall("bla", null, successHandler, errorHandler);
someFunctionRPCcall("bla", null, successHandler);
someFunctionRPCcall("bla", null);
我听说要取一个对象,在这个对象中定义函数

这段代码不调用自定义处理程序,但我想这是另一个问题(缺少使用apply之类的东西) 我想在这里提出的问题是: 是否有方法将这两个函数作为可选参数传递?关于使用对象的建议怎么样


谢谢

如您所述,您可以获得获取对象的函数,例如:

function someRPCcall(args) {
    var method = args.method || "POST";
    var url = args.url || "default";
    var data = args.data || {};
    var successHandler = args.success || defaultSuccessRESTHandler;
    var failedHandler = args.failed || defaultFailedRESTHandler;

    ajaxCall(method, url, data, successHandler, failedHandler);
}
您将注意到,如果
args
对象上不存在属性,则会为其提供默认值

然后按如下方式调用它:

someRPCcall({
    url : "the url",
    failed: function() { ... }
});
当然,如果未设置某些值,您可能会抛出异常,例如
url

function someRPCcall(args) {
    if(!args.url) { 
        throw "url must be set";
    }
}

只有一个对象作为参数对我来说似乎很奇怪(即使我相信它是有效的)。只传递一个对象中的函数,而其他参数仍然作为简单的参数传递,怎么样?是的,你可以这样做,但我认为传递一个对象就不那么奇怪了。这就是上面的jQuery
$.ajax
函数所做的!
function someRPCcall(args) {
    if(!args.url) { 
        throw "url must be set";
    }
}