Estou lutando para descobrir o problema com a seguinte sintaxe:
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);
}
};
Eu continuo recebendo erros dizendo:
aguardar é uma palavra reservada
... mas não é legal em uma função assíncrona?
O bit de despacho está vindo da biblioteca react-thunk .
(dispatch) =>
, e não é assíncrona. Por que você tem quesendVerificationEmail
retornar outra função em vez de realizar alguma ação?async (dispatch) =>
você possa postar isso como uma resposta, eu preciso devolvê-lo para ter acesso ao despachoRespostas:
Para usar
await
, a função que o envolve diretamente precisa ser assíncrona. De acordo com seu comentário, adicionarasync
à função interna corrige seu problema, então postarei isso aqui: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); } };
Possivelmente, você poderia remover o
async
da função externa porque ela não contém nenhuma operação assíncrona, mas isso dependeria se o chamador dessesendVerificationEmail
está esperandosendVerificationEmail
retornar uma promessa ou não.fonte