异步数据加载后提交 HTML 表单的正确方法是什么?

What is the proper way to submit HTML form after asynchronous data load?

愚蠢的是我找不到这个所以如果我重复了我提前道歉,但是我已经查看了搜索引擎和 SO 没有找到我需要的东西。

只有在我从第 3 方 API 异步加载数据以填写表单的某些隐藏字段后,才能在用户单击时提交 HTML 表单的正确方法是什么?

我试过这个结构,没用:

form onclick = function1()
function1() calls function apicall that retrieves info from 3rd party api and in its completion handler then calls function2
function2 checks all form fields and returns true if form should be submitted, false if it should not

有了这个结构,我的表单总是被提交,尽管第 3 方 api 函数完成处理程序和 function2 都可以自己正常工作。 function2 可以 return false 一整天,但表单仍然提交。我该怎么办?异步计时似乎没问题,但不知何故 return false 没有返回到 FORM 元素。

感谢您提供任何提示或代码示例。

异步函数不能 return 任何东西 -- 调用者不会等待它们完成。因此表单的 onsubmit 处理程序应该 return false 以防止表单提交。

然后在function2()中,如果表单验证成功,就可以调用

document.getElementById('formID').submit();

执行实际的表单提交。