J'ai du mal à résoudre 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 reçois une erreur en disant:
attendre est un mot réservé
... mais n'est-ce pas légal dans une fonction asynchrone?
Le bit d'expédition provient du bibliothèque react-thunk .
(dispatch) =>
, et ce n'est pas asynchrone. Pourquoi avez-vous lesendVerificationEmail
renvoi d'une autre fonction au lieu d'effectuer une action?async (dispatch) =>
vous puissiez poster cela comme réponse, je dois le renvoyer afin d'avoir accès à la répartitionRéponses:
Pour pouvoir être utilisé
await
, la fonction qui l'entoure directement doit être asynchrone. Selon votre commentaire, l'ajoutasync
de la fonction interne résout votre problème, je le posterai donc 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); } };
Vous pouvez éventuellement supprimer le
async
de la fonction externe car il ne contient aucune opération asynchrone, mais cela dépendra du fait que l'appelant de celasendVerificationEmail
s'attendsendVerificationEmail
à renvoyer une promesse ou non.la source