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

时间:2017-02-17 13:48:20

标签: javascript reactjs async-await redux

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

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

2 个答案:

答案 0 :(得分:115)

为了使用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到是否还许。

答案 1 :(得分:-2)

更新nodeJs的版本。它将解决您的问题(9/9+)