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 的保留字错误

JavaScript async/await:await 是保留字 [重复]

Python,节省时间的开始2保留字

python3.8保留字总数

python中自定义函数的保留字是

使用 Async 和 .then 承诺