1. ホーム
  2. javascript

[解決済み] 非同期関数内部でAwaitが予約語になっているエラー

2022-02-11 08:06:16

質問

以下の構文の問題点を把握するのに苦労しています。

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 は予約語です。

...しかし、非同期関数内では合法ではないのでしょうか?

ディスパッチビットが来ているのは リアクトサンク ライブラリを使用します。

解決方法は?

を使用するために 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 外側の関数には非同期処理が含まれていないため、この関数の呼び出し元である sendVerificationEmailsendVerificationEmail がプロミスを返すかどうか。