等待是异步函数中的保留字错误

问题描述 投票:66回答:1

我很努力找出问题的语法如下:

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);
    }
  };

我不断收到错误说:

等待是一个保留字

......不过,是不是一个异步函数中的法律?

调度位从react-thunk图书馆来了。

javascript reactjs async-await redux
1个回答
124
投票

为了使用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返回一个承诺或没有。

© www.soinside.com 2019 - 2024. All rights reserved.