如何在Javascript中将封闭函数作为其自己的递归回调传递?
我正在为一组应用程序设计一个AJAXy表单生成Javascript库,其中回调行为应根据应用程序的不同而有所不同。我公开的API函数采用一组回调,将功能附加到各种按钮和标准表单中发生的其他事件:如何在Javascript中将封闭函数作为其自己的递归回调传递?,javascript,ajax,callback,closures,Javascript,Ajax,Callback,Closures,我正在为一组应用程序设计一个AJAXy表单生成Javascript库,其中回调行为应根据应用程序的不同而有所不同。我公开的API函数采用一组回调,将功能附加到各种按钮和标准表单中发生的其他事件: onLoadCallback[表单完全加载时] onSaveCallback[成功处理保存时] onCancelCallback[单击取消按钮时] busyCallback[每当AJAX操作正在进行时] readyCallback[当AJAX操作完成时] 例如,一个应用程序希望在新的弹出窗口中呈现此
- onLoadCallback[表单完全加载时]
- onSaveCallback[成功处理保存时]
- onCancelCallback[单击取消按钮时]
- busyCallback[每当AJAX操作正在进行时]
- readyCallback[当AJAX操作完成时]
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
function onSaveCallback(result) {
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
onSaveCallback,
onCancelCallback,
busyCallback,
readyCallback);
},
onCancelCallback,
busyCallback,
readyCallback);
给它起个名字。在上面的例子中,您将其称为
onSaveCallback
inside。只需将该名称用于外部函数,并将其称为onSaveCallback
<代码>参数。被调用方如果有无法为其命名的原因,也应该可以使用
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
arguments.callee,
onCancelCallback,
busyCallback,
readyCallback);
将调用放在函数中,以便可以递归调用它:
function recursiveSaveCallback (result) {
MyFormLibrary.displayForm(
div,
formName,
query,
onLoadCallback,
recursiveSaveCallback,
onCancelCallback,
busyCallback,
readyCallback
);
}
recursiveSaveCallback(result);
真是太棒了,谢谢!我想我以前试过,但我可能做得太复杂了,失败了。另外,现在我将回调封装在一个对象中以简化代码,这实际上使它看起来更好。