¿Por qué tengo que envolver await con () para obtener el resultado que necesito? Espero obtener solo el uid del objeto.
Los datos que se devuelven de la función que estoy importando son exactamente como los ve
{uid : 'abcdefg', email:'youremail@gmail.com'} import {ActiveUser} from './teamMembers.service'; export const retrieveList = async date => { console.log('active user information here', (await ActiveUser()).uid); // outputs: Works as expected // active user information here abcdefg console.log('active user information here', await ActiveUser().uid); // outputs: //Undefined console.log('active user information here', typeof (await ActiveUser())); // outputs: // object }El operador await se usa para esperar una Promesa (el objeto Promesa representa la eventual finalización (o falla) de una operación asíncrona y su valor resultante) y solo se puede usar dentro de una función asíncrona.
Debe esperar su tarea asíncrona (Usuario activo) una vez y luego puede hacer referencia a sus datos (que es el estado resuelto de ese código asíncrono que ocurre allí)
import {ActiveUser} from './teamMembers.service'; export const retrieveList = async date => { const data = await ActiveUser(); const uid = data.uid; const name = data.name; }Le sugiero que lea más El ciclo de eventos y el modelo de concurrencia y su secreto detrás de la programación asíncrona de JavaScript.
Más información sobre async : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
Más información sobre el bucle de eventos : https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop