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:
- Mantener como está.
usrs()
se ejecutará completamente en segundo plano ycomponentDidMount
seguirá funcionando hasta su finalización. - Usar
await
asi quecomponentDidMount
esperará el regreso deusrs()
. - Usar
usrs().then()
asi quecomponentDidMount
puede continuar, pero el código especificado en.then()
se invoca despuésusrs()
regresa, si necesita hacer algo que tiene que suceder despuésusrs()
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 componentDidMount
su 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 componentDidMount
pero 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.