正确的方法来设置一系列同步/异步function,所有这些function都可以停止表单提交和进一步处理?

  1. 我需要在表单提交按钮上依次调用一些函数 –

    func1() – > func2() – > func3()… – > func7() – > …

  2. 所有这些函数都进行某种validation/检查,如果validation失败,则向用户显示确认对话框。 如果用户确认,则执行队列中的下一个function。

  3. 这些函数中的任何一个都可以执行一些异步任务,例如发送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 pipereturn false; 最后,以防止立即提交表格。

我必须运行,所以我没有完整的代码示例; 我希望你能算出延期;-)只能在3个小时左右回来。