Await 是 async 函数中的保留字错误

IT技术 javascript reactjs async-await redux
2021-02-04 10:25:02

我正在努力用以下语法找出问题:

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库。

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返回Promise。

使用嵌入在 forEach 然后在异步函数中的 await 也是如此。
2021-03-22 10:25:02
啊!谢谢!我在 forEach 中遇到了同样的问题......残酷:)
2021-03-25 10:25:02
实际上不需要外部异步
2021-04-07 10:25:02