簡體   English   中英

JavaScript異步/等待未正確等待?

[英]JavaScript async/await not awaiting properly?

我在JavaScript的async / await函數方面遇到問題。 這是在我無法共享其源代碼的內部應用程序上發生的,但是我將我的問題進行了快速的通用復制:

 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function baz(input) { console.log("4"); await sleep(1000); console.log("5"); return input; } async function bar(input) { console.log("3"); return await baz(input); } async function foo() { console.log("2"); const foo = await bar("foo"); return foo; } console.log("1"); foo(); console.log("6"); 

我希望這會在45之間等待一秒鍾,返回以下內容:

1
2
3
4
5
6
"foo"

相反,在Chrome 64.0.3282.167和Firefox 58.0.2中的控制台中嘗試此操作后,我收到以下消息:

1
2
3
4
6
undefined
5

請有人指出我在這方面出錯了嗎?

頂層正在同步運行(始終如此)-它不等待foo(); 在繼續console.log("6");之前解決console.log("6"); foo的調用包裝在異步中,然后await它。 如果要稍后顯示foo還需要保存foo的返回值:

 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function baz(input) { console.log("4"); await sleep(1000); console.log("5"); return input; } async function bar(input) { console.log("3"); return await baz(input); } async function foo() { console.log("2"); const foo = await bar("foo"); return foo; } (async () => { console.log("1"); const str = await foo(); console.log("6"); console.log(str); })(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM