javascript - 如何从 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
}
解决方案
运算符用于等待 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
推荐阅读
- ssh - 为什么“ssh root@server”需要 id_dsa 密钥?
- r - 使用 ggplot 在雷达图中错误绘制 NA 数据
- java - 想要编写代码而不抛出异常
- php - 如何使用 wordpress 转义功能回显 Google Adsense 代码?
- android - 类 'org.apache.commons.logging.impl.LogFactoryImpl' 不能转换为 'org.apache.commons.logging.b'
- typescript - 如何处理打字稿中可能未定义的?
- opencv - 使用 dlib 和 opencv 的应用程序的 yocto 配方
- artifactory - Artifactory 查询语言:查找构建的依赖项
- amazon-s3 - AWS S3 CopyObject 保持缓存控制?
- c# - 将项目添加到 IEnumerable
创建新的类对象时