为什么我必须用()包装await才能获得我需要的输出?我希望只从对象
获得uid从我导入的函数返回的数据和你看到的完全一样
{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
}
await
操作符用于等待Promise (Promise对象表示异步操作的最终完成(或失败)及其结果值),它只能在异步函数中使用。
你需要等待你的异步任务(ActiveUser)一次,之后你可以引用它的数据(这是异步代码发生在那里的解析状态)
import {ActiveUser} from './teamMembers.service';
export const retrieveList = async date => {
const data = await ActiveUser();
const uid = data.uid;
const name = data.name;
}
我建议你读更多的事件循环和并发模型,它背后的JavaScript异步编程的秘密。
关于async——https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
关于事件循环的更多信息——https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop