web-dev-qa-db-ja.com

待機は非同期関数内の予約語エラーです

私は次の構文で問題を把握するのに苦労しています:

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 ライブラリから来ています。

67
Ilja

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を返すことを期待しているかどうかによって異なります。

117
JLRishe