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