javascript - 如何等到异步步骤完成?

标签 javascript forms validation submit

我有一个表单,需要在提交之前运行一些验证操作。这些操作涉及异步步骤,例如 ajax 调用。

如何让表单等待所有验证操作完成后再提交?

我的验证函数如下所示(伪代码):

function preSubmit() {
    // validate field 1
    ajax({
        ...
        onSuccess:...
    });
    // validate field 2
    ajax({
        ...
        onSuccess:...
    });
    // fields 3, 4, etc.
}

我当前的问题是在 onSuccess 回调完成之前提交了表单。

我当然可以使我的 ajax 调用同步,但由于性能影响,我正试图避免它。

最佳答案

如果您正在使用 jQuery,那么您可能需要考虑 JQuery.Deferred 或 Promise

当前一个调用完成(成功或失败)时,您调用每个 ajax 请求(或包含该请求的函数)。

如果你使用 $.when 你可以通过 .then 回调来管理失败的请求。如果您使用 promises,那么您可以在各种场景中使用 .done .fail.always 回调。

$.when($.ajax("...."), $.ajax("...."))
  .then(...);

资源:

关于javascript - 如何等到异步步骤完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987760/

相关文章:

forms - Symfony 不验证对象约束

validation - javascript 的 angular.js 验证

javascript - 禁用双指缩放以放大 highstock/highcharts

javascript - 在 JavaScript 中获取 JSON 对象的 "path"

javascript - 包含DIV的显示宽度

forms - Grails withForm,是否在出错时重置 token ?

c# - 如何结合RegularExpressionValidator控件和RequiredFieldValidator?

javascript - 如何判断 IE8 窗口何时失去焦点?

javascript - 带有react-jsonschema-form lib的后退按钮

php - 使用 PHP 注册表中的单选按钮同意或不同意条款和条件