簡體   English   中英

如何使用await調用異步箭頭函數

[英]How to call an async arrow function with await

如果我定義這樣的函數:

const getName = async () => await Promise.resolve('John');

當我嘗試使用async調用getName函數時:

const name = await getName();
console.log(`Hi ${name}`);

它拋出一個錯誤:

const name = await getName();
             ^^^^^

SyntaxError: await is only valid in async function

我做錯了什么?

 const getName = async () => await Promise.resolve('John'); 

在上面,你有一個使用await inside的異步函數(箭頭函數)。

這很好(雖然沒有意義,因為你可以直接返回承諾)。

這里:

 const name = await getName(); 

你再次使用await ,雖然右側的函數確實返回了一個promise,但它里面出現的函數並不是async所以它是無效的。


把它放在一個異步函數里面就可以了:

 const getName = async() => await Promise.resolve('John'); const init = async() => { const name = await getName(); console.log(`Hi ${name}`); }; init(); 

如上所述,使getName asyncawait內部只是一組不必要的復雜的嵌套promise,你可以簡化:

 const getName = () => Promise.resolve('John'); const init = async() => { const name = await getName(); console.log(`Hi ${name}`); }; init(); 

暫無
暫無

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

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