亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 異步函數執行順序

JavaScript 異步函數執行順序

千巷貓影 2022-12-29 13:50:36
我有一個調用多個異步函數的函數。$("#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() 都聲明為異步的,并且都包含 await 語句。我收到奇怪的行為,這似乎在向我發出信號,表明這三個函數沒有按照它們在代碼中編寫的順序運行。我認為對于異步代碼,所有其他代碼都會暫停執行并等待 await 語句完成。但是從我的日志來看,我的功能似乎并非如此。這種行為只是在異步函數本身的范圍內嗎?三個函數的執行順序是什么?可以在 ssubmitForm() 執行完成之前調用 sendEmailVerification() 嗎?另外,我不確定我是否使用了正確的措辭/詞匯來描述我的問題。這對我來說是個大問題,因為如果我不知道詞匯,我就不容易搜索我的問題。請隨時糾正我對術語的任何誤用。
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

它們按照它們被調用的順序啟動,但是因為它們是異步的,所以它們可能不會按照它們被調用的順序運行。它們立即返回并返回一個 unresolved Promise,當被調用函數完成時,它最終將異步解析(或拒絕)。


您需要依次標記您的功能async和await每個調用:


$("#signUpForm").validator().on("submit", async 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

    await ssubmitForm();

    

    //send email verification

    await sendEmailVerification();


    //sign out the user

    await signOut();

    

  

}

});

為了更好地理解async/ await,我建議先學習 promises。它們是讓一切運轉起來的基礎模型;async/await只是最上面的語法糖。


查看完整回答
反對 回復 2022-12-29
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號