Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript异步函数执行顺序_Javascript_Async Await - Fatal编程技术网

JavaScript异步函数执行顺序

JavaScript异步函数执行顺序,javascript,async-await,Javascript,Async Await,我有一个函数可以调用多个异步函数 $("#signUpForm").validator().on("submit", function(event) { if (event.isDefaultPrevented()) { // handle the invalid form... sformError(); ssubmitMSG(false, "Please fill all fields!"); } else

我有一个函数可以调用多个异步函数

$("#signUpForm").validator().on("submit", function(event) {
if (event.isDefaultPrevented()) {
    // handle the invalid form...
    sformError();
    ssubmitMSG(false, "Please fill all fields!");
} else {
    // everything looks good!
    event.preventDefault();
    
    //create use when form is submit
    ssubmitForm();
    
    //send email verification
    sendEmailVerification();

    //sign out the user
    signOut();
    
  
}
});
函数ssubmitForm()、sendEmailVerification()和SignOut()都声明为异步的,并且其中都包含WAIT语句

我得到了一个奇怪的行为,它似乎向我发出信号,这三个函数没有按照它们在代码中编写的顺序运行。我认为,对于异步代码,所有其他代码都会暂停执行并等待wait语句完成。但从我的日志来看,我觉得情况似乎并非如此。这种行为是否仅在异步函数本身的范围内?这三个功能的执行顺序是什么?能否在执行ssubmitForm()之前调用sendEmailVerification()


此外,我不确定我是否使用了正确的措辞/词汇来描述我的问题。这对我来说是一个大问题,因为如果我不知道我的名字,我就很难找到我的问题。请随时纠正我对术语的任何误用。

它们是按调用顺序启动的,但由于它们是异步的,因此可能不会按调用顺序运行。它们立即返回,并返回一个未解析的
承诺
,该承诺最终将在被调用函数完成时异步解析(或拒绝)

您需要依次将函数
async
wait
标记为每个调用:

$(“#注册表单”).validator().on(“提交”,异步函数(事件){
if(event.isDefaultPrevented()){
//处理无效的表单。。。
sformError();
ssubmitMSG(错误,“请填写所有字段!”);
}否则{
//一切看起来都很好!
event.preventDefault();
//提交表单时创建和使用
等待ssubmitForm();
//发送电子邮件验证
等待sendEmailVerification();
//注销用户
等待注销();
}
});

为了更好地理解
async
/
wait
,我建议首先学习承诺。它们是让一切运转正常的基础模型
async
/
await
只是上面的语法糖。

因为您没有在等待它们:
await ssubmitForm()
等等。您认为异步代码不同步运行很奇怪吗p这并不奇怪,这是预期的。@Wimanicesir我正在使用wait来尝试添加一些同步性。在每个异步方法之后签出或使用then<代码>ssubmitForm()。然后(()=>sendEmailVerification());我懂了。我不确定把异步文件放在哪里。我试着把它放在听众面前。我想我在尝试使用样板代码时被弄糊涂了。非常感谢你。