Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

120
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!