首页 > 解决方案 > 如何从 React 或 Javascript 中的对象属性中获取值

问题描述

为什么我必须用 () 包装 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
}

标签: javascriptreactjs

解决方案


运算符用于等待 Promise(Promise 对象表示异步操作的await最终完成(或失败)及其结果值),它只能在异步函数内部使用。

您需要等待您是异步任务(ActiveUser)一次,然后您可以引用它的数据(这是那里发生的异步代码的已解决状态)

import {ActiveUser} from './teamMembers.service';

export const retrieveList = async date => {
   const data = await ActiveUser();
   const uid = data.uid;
   const name = data.name;
}

我建议你阅读更多事件循环和并发模型,它是 JavaScript 异步编程背后的秘密。

更多关于异步- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

有关事件循环的更多信息- https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop


推荐阅读