javascript - 如何从浏览器控制台上可见的对象获取数据,但在我的代码上手动遍历它时返回 null?
问题描述
//listen for messages
channel.on("messageAdded", function (message) {
//render new message
console.log("New awesome message", message)
//this is null for some reason
console.log("Stringify 3",JSON.stringify(message.state.aggregatedDeliveryReceipt))
}
我能够做一个
console.log(temp1.state.aggregatedDeliveryReceipt)
然后回来
问题是,当我state.aggregatedDeliveryReceipt
在我的 JS 文件上使用它时,我无法得到想要的结果。它说它是null
在谷歌搜索后,我了解到它是某种构造函数......
我试过的:
JSON.stringify()
在 temp1 上使用
结果: 未捕获的类型错误:将循环结构转换为 JSON --> 从带有构造函数“l”的对象开始 | property '_fsm' -> object with constructor 'o' --- property 'context' 闭合圆圈
- 用在
temp1.state
结果:
{"sid":"IMd0XXXXXXXfd8aa","index":532,"author":"XXXX","body":"XXXX","timestamp":"2020-XXXXX:12.XX","dateUpdated":"2020-11-XXXXX:12.574Z","lastUpdatedBy":null,"attributes":{},"type":"text","media":null,"participantSid":"MB0a5d2XXXXXXX27ddf4da6","aggregatedDeliveryReceipt":null}
解决方案
如果您在 devtools 控制台与您的代码中获得不同的行为,则可能是时间问题。当您尝试在 devtools 控制台中访问数据时,数据很可能已经加载,而如果您在代码中过早访问它,则可能没有。
作为第一步,使用setTimeout()
将读取值的代码延迟相当长的时间(几秒钟),然后查看它是否可以正确读取。那么至少你会知道问题是什么。
推荐阅读
- php - 在远程数据库(MySQL)中选择 * 不会带来所有数据
- spring - Spring Boot 优雅关闭 Tomcat - 连接关闭管理
- laravel - 除非硬编码 ID,否则联接表不起作用
- swift - 如何让一条线跟随触摸而不是在 spritekit 中绘制无限?
- python - python shutil.make_archive - 没有嵌套目录结构的压缩
- python - 将两个较大的十六进制范围拆分为较小的相等范围
- javascript - 我想在做 mapSeries 后返回函数
- c++ - 我的结果并不是真正随机的。我怎样才能解决这个问题?
- node.js - 检查是否使用单个 findOneAndUpdate 查询更新了特定字段?
- react-native - 标记位置未正确更新(仅当提供者为 google 时)