我需要在表单提交按钮单击时依次调用一些函数-
func1() -> func2() -> func3() ... -> func7() -> ...
所有这些功能都会进行某种验证/检查,如果验证失败,则会向用户显示确认对话框。如果用户确认,则执行队列中的下一个函数。
这些函数中的任何一个都可以执行一些异步任务,例如发送 Ajax 请求,并根据结果向用户显示一些确认对话框。
细节
我有具有以下结构的异步函数 -
function preValidateUrls(evt)
{
evt.preventDefault();
$.ajax({
type: "POST",
url: posturl+"?"+params,
dataType: "json",
success: function(res)
{
//display some confirmation dialog
if(confirm(msg))
{
$("form#frmBanners").submit();
}
}
});
}
我该怎么做呢?
首先,我只有两个像这样定义的同步函数 -
<form onsubmit="return func3()">
...
...
<input type="submit" onclick="return func1()"/>
</form>
func1() 最初被调用,显示确认对话框,然后是 func2()...
然后我定义了异步函数 func2() (结构与上图相同)并像这样调用它 -
$("input#formsubmitbutton").click(func2);
但是,正如预期的那样,这不会等待 func1() 的确认。
如果我确实喜欢以下内容,则该函数
func2
会一次又一次地被调用-$('form#frmBanners').submit(function() { return func2(); //这个在preValidateUrls()之后调用 });
我如何以一种干净的方式做到这一点,所以明天当我需要在两者之间添加任何同步/异步函数时,我只需要在一个地方进行编辑,比如 -
func1() -> func2() -> func3() ... -> func7()
PS - 我知道,如何在 javascript 中使用回调函数。