2017-10-12 82 views
0

我有三個異步函數中被調用。我需要連續地調用這些功能,所以我寫了這樣的代碼:異步函數未按順序

getData = async() => { 
    try { 
     await getAccounts(); 
     await getPages(); 
     await getDepositList(); 
    } 
    catch(err) { 
     ... 
    } 
} 

從本條款(https://medium.com/@peterchang_82818/asycn-await-bible-sequential-parallel-and-nest-4d1db7b8b95c),它必須是連續的工作,但是當我跑了這一點,他們是援引在一起,我所有的邏輯混亂了。

如何按順序運行這些功能?

+3

一個不相關的指針:你不必*在'try/catch'塊中包裝每個'await'表達式。看到這個例子:https://repl.it/M6Cn/3 - 錯誤在整個函數調用鏈中傳播。 – Svenskunganka

回答

3

如果執行看到一個等待,它應該只在承諾解決或拒絕之後繼續,因此它應該是順序的。我希望你也等待getData()?

+0

不,getData函數是從普通函數調用的。 – modernator

+2

嗯,這不應該是一個問題,對於混淆抱歉。什麼讓你可以假設他們被「一起」調用? –

+0

哦,我是池。我在等待之後調用其中的每個函數,這就是爲什麼他們會隨機調用。它工作,謝謝。 – modernator