Saltar al contenido

¿Es posible llamar a la función asíncrona sin esperar la palabra clave? y que pasa si llamamos sin esperar?

este problema se puede resolver de diferentes formas, pero te damos la solución más completa en nuestra opinión.

Solución:

Solo necesitas await si la persona que llama necesita esperar a que se realice la función, por ejemplo, cuando necesita el resultado de la función, o cuando necesita esperar algún cambio de estado/datos que provoca la función. Si no existe tal dependencia, puede simplemente ‘disparar y olvidar’, al no usar el await palabra clave.

Como otros mencionaron, podrías usar .then también, pero la regla básica es la misma: haces eso, cuando tienes algo específico que hacer después de que la función está hecha. Se puede omitir en caso contrario.

En concreto: con ‘llamador’, simplemente me refiero a la función que llama a la función asíncrona. en tu caso seria componentDidMount. Las opciones son entonces bastante simples:

  1. Mantener como está. usrs() se ejecutará completamente en segundo plano y componentDidMount seguirá funcionando hasta su finalización.
  2. Usar awaitasi que componentDidMount esperará el regreso de usrs().
  3. Usar usrs().then()asi que componentDidMount puede continuar, pero el código especificado en .then() se invoca después usrs() regresa, si necesita hacer algo que tiene que suceder después usrs() está hecho.

Usamos await cuando necesitamos llamar y esperar async función o Promise

En tu caso cuando lo llamas sin await dentro de tu componentDidMountsu función funcionará pero su componentDidMount no esperará a que esa función termine por completo.
También si no quieres usar await y no quieres esperar adentro componentDidMountpero desea recibir una notificación cuando su async finaliza la función, puede usar .then en cambio. Porque async funciones devuelve Promise

Aquí está tu componentDidMount con .then

Note que en este ejemplo this.doSomethingElse llamará antes de la this.usrs está completo, y solo se le notificará dentro .then sobre tu this.usrs resultado cuando terminó:

componentDidMount()
    this.usrs(usrs).then(() => 
        // Your functions completely finished
    )
    .catch(err => 
        // There was an error
    );

    this.doSomethingElse();

El trabajo asíncrono antes del nombre de la función significa que la función siempre devuelve una promesa, por lo que sí es posible.

await hace que JavaScript espere hasta que se resuelva la promesa y se detiene cuando necesita trabajar en el resultado de esa promesa.

Para entenderlo mejor, recomiendo ver la siguiente página https://javascript.info/async-await

Agradecemos que desees asistir nuestra tarea escribiendo un comentario y dejando una valoración te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *