Await 是异步函数中的保留字错误
Posted
技术标签:
【中文标题】Await 是异步函数中的保留字错误【英文标题】:Await is a reserved word error inside async function 【发布时间】:2017-07-07 01:52:17 【问题描述】:我正在努力用以下语法找出问题:
export const sendVerificationEmail = async () =>
(dispatch) =>
try
dispatch( type: EMAIL_FETCHING, payload: true );
await Auth.sendEmailVerification();
dispatch( type: EMAIL_FETCHING, payload: false ))
catch (error)
dispatch( type: EMAIL_FETCHING, payload: false );
throw new Error(error);
;
我不断收到错误提示:
await 是保留字
...但它在异步函数中不合法吗?
调度位来自react-thunk 库。
【问题讨论】:
它不在异步函数中。它在以(dispatch) =>
开头的函数内部,这不是异步的。为什么sendVerificationEmail
返回另一个函数而不是执行某些操作?
@JLRishe 确实需要是 async (dispatch) =>
你可以将其作为答案发布,我需要将其退回才能访问调度
2ality.com/2016/10/async-function-tips.html
【参考方案1】:
为了使用await
,直接包含它的函数需要是异步的。根据您的评论,将async
添加到内部函数可以解决您的问题,因此我将在此处发布:
export const sendVerificationEmail = async () =>
async (dispatch) =>
try
dispatch( type: EMAIL_FETCHING, payload: true );
await Auth.sendEmailVerification();
dispatch( type: EMAIL_FETCHING, payload: false ))
catch (error)
dispatch( type: EMAIL_FETCHING, payload: false );
throw new Error(error);
;
可能,您可以从外部函数中删除async
,因为它不包含任何异步操作,但这取决于sendVerificationEmail
的调用者是否期望sendVerificationEmail
返回一个承诺。
【讨论】:
确实不需要外部异步 啊!谢谢!我在 forEach 中遇到了同样的问题......残酷:) 同上在这里使用嵌入 forEach 然后在异步函数中的等待。以上是关于Await 是异步函数中的保留字错误的主要内容,如果未能解决你的问题,请参考以下文章
await 是 Expo XDE 中 React Native 的保留字错误