我正在为一组应用程序设计一个AJAXy表单生成Javascript库,其中回调行为应根据应用程序而有所不同。我正在公开的API函数采用一组回调,将功能附加到标准表单中出现的各种按钮和其他事件:
例如,一个应用程序想要在新弹出窗口中呈现此窗体,而另一个应用程序希望它在现有页面中内联。在弹出场景中,onSaveCallback将关闭弹出窗口并将消息发布到启动页面。在内联方案中,onSaveCallback应该通过重新运行该函数来重新加载表单内容。
是否有一种标准的,更简单的方法来执行递归回调,而不是两次写函数,如下所示?
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
function onSaveCallback(result) {
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
onSaveCallback,
onCancelCallback,
busyCallback,
readyCallback);
},
onCancelCallback,
busyCallback,
readyCallback);
答案 0 :(得分:2)
给它起个名字。在上面的例子中,你在里面称它为onSaveCallback
。只需将该名称用于外部函数,并将其称为onSaveCallback
。如果有理由不能给它起个名字,那么arguments.callee
也应该有效。
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
arguments.callee,
onCancelCallback,
busyCallback,
readyCallback);
答案 1 :(得分:0)
将你的电话放在一个函数中,这样你就可以递归调用它:
function recursiveSaveCallback (result) {
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
recursiveSaveCallback,
onCancelCallback,
busyCallback,
readyCallback
);
}
recursiveSaveCallback(result);