Car*_*los 1 javascript async-await
如果我定义这样的函数:
const getName = async () => await Promise.resolve('John');
Run Code Online (Sandbox Code Playgroud)
当我尝试使用异步调用getName函数时:
const name = await getName();
console.log(`Hi ${name}`);
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误:
const name = await getName();
^^^^^
SyntaxError: await is only valid in async function
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
Run Code Online (Sandbox Code Playgroud)const getName = async () => await Promise.resolve('John');
在上面,您具有await在内部使用的异步函数(箭头函数)。
很好(尽管没有意义,因为您可以直接返回承诺)。
这里:
Run Code Online (Sandbox Code Playgroud)const name = await getName();
await再次使用时,尽管右侧的函数确实返回了promise,但是它出现在内部的函数无效,async因此无效。
将其放在异步函数中,就可以了:
const getName = async () => await Promise.resolve('John');
Run Code Online (Sandbox Code Playgroud)
如前所述,在内部进行创建getName async和await嵌套只是一组不必要的嵌套承诺,您可以简化以下操作:
const name = await getName();
Run Code Online (Sandbox Code Playgroud)