65 votes

Await est une erreur de mot réservé dans la fonction async

J'ai du mal à comprendre le problème avec la syntaxe suivante:

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

Je continue à avoir des erreurs en disant:

attendre est un mot réservé

... mais n'est-ce pas légal dans une fonction asynchrone?

Le bit de répartition provient de la bibliothèque react-thunk .

110voto

JLRishe Points 22173

Afin d'utiliser await, la fonction directement en joignant il doit être asynchrone. Selon votre commentaire, ajout d' async à l'intérieur de la fonction résout votre problème, donc je vais la poster ici:

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

Éventuellement, vous pouvez supprimer l' async à partir de l'extérieur de la fonction, car il ne contient pas toutes les opérations asynchrones, mais cela dépendra de si l'appelant de cette sendVerificationEmail attendent sendVerificationEmail de retour d'une promesse ou pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: