Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
Await es un error de palabra reservada dentro de la función asíncrona

Estoy luchando para resolver el problema con la siguiente sintaxis:

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

Sigo recibiendo un error que dice:

esperar es una palabra reservada

... pero ¿no es legal dentro de una función asíncrona?

El bit de envío proviene de la biblioteca react-thunk .

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Para usar await , la función que lo encierra directamente debe ser asíncrona. De acuerdo con su comentario, agregar async a la función interna soluciona su problema, así que lo publicaré aquí:

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

Posiblemente, podría eliminar el async de la función externa porque no contiene ninguna operación asíncrona, pero eso dependería de si la persona que llama a ese sendVerificationEmail espera que sendVerificationEmail devuelva una promesa o no.

over 4 years ago · Santiago Trujillo Relatório

0

Solución

Use await directamente dentro del alcance que está usando async y elimine el alcance superior async ya que es redundante.

La forma correcta de escribir esto:

 const sendVerificationEmail = () => async (dispatch) => { await Auth.sendEmailVerification(); // some code.. };

Elaboración

Tuviste el error porque usaste la palabra clave await sin async directamente en el alcance con await , tenías 2 funciones allí, una dentro de la otra, tenías async en la parte superior pero no en la interna, donde importa.

Camino equivocado:

 const sendVerificationEmail = async () => // notice that an async before the (dispatch) is missing (dispatch) => { await Auth.sendEmailVerification(); // some code.. };

A partir de esto, se generará un error (el último error disponible de Chrome):

Uncaught SyntaxError: await is only valid in async functions and the top level bodies of modules

Referencia

Async Functions

Una función asíncrona es una función declarada con la palabra clave asíncrona y la palabra clave espera está permitida dentro de ella. Las palabras clave async y await permiten que el comportamiento asincrónico basado en promesas se escriba en un estilo más claro, lo que evita la necesidad de configurar explícitamente cadenas de promesas.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda