正确的方法来设置一系列同步/异步function,所有这些function都可以停止表单提交和进一步处理?
-
我需要在表单提交按钮上依次调用一些函数 –
func1() – > func2() – > func3()… – > func7() – > …
-
所有这些函数都进行某种validation/检查,如果validation失败,则向用户显示确认对话框。 如果用户确认,则执行队列中的下一个function。
-
这些函数中的任何一个都可以执行一些异步任务,例如发送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(); } } }); }
我该怎么做呢?
首先,我只有两个同步函数定义如下 –
-
首先调用func1(),显示确认对话框,然后是func2()…
-
然后我定义了异步函数func2()(具有与上面相同的结构)并像这样调用它 –
$( “#输入formsubmitbutton”)点击(FUNC2);
但是,正如预期的那样,这并不等待func1()的确认。
-
如果我喜欢以下内容,
func2
一次又一次地调用函数func2
–$(’form#frmBanners’)。submit(function(){return func2(); //这是在preValidateUrls()})之后调用的;
我如何以一种干净的方式做到这一点,所以明天当我需要在其间添加任何同步/异步function时,我只需要在一个地方编辑,类似于 –
func1() -> func2() -> func3() ... -> func7()
PS – 我知道,如何在javascript中使用回调函数。
如何在提交处理程序中只有一个函数:
然后在你的func_test_all()
设置一个Deferred pipe
并return false;
最后,以防止立即提交表格。
我必须运行,所以我没有完整的代码示例; 我希望你能算出延期;-)只能在3个小时左右回来。