【问题标题】:Access value from a JavaScript map only possible from DevTools只能从 DevTools 访问 JavaScript 映射中的值
【发布时间】:2018-02-07 11:31:34
【问题描述】:

所以我正在尝试访问从第三方服务 (Twilio) 返回的数组中的值,并且我可以在放置时得到我需要的东西

room.participants.forEach(function(participant){
    console.log(Array.from(participant.tracks));
});

在开发工具中,我收到:

(2) [Array(2), Array(2)]
0: (2) ["f469c8e5-4f94-4752-b018-af02d32fe448", AudioTrack]
1: (2) ["be6c2aa6-4c7c-4431-a964-a711f000562a", VideoTrack]
length :2
__proto__ : Array(0)

但我脚本中的相同代码会产生[] 作为结果。这不是时间问题,因为我可以使用控制台记录 room.participants 以及各个轨道的地图

var myKeys = room.participants.keys();
console.log(myKeys); 
var myParticipant = room.participants.get(myKeys.next().value);
console.log(myParticipant);
console.log(myParticipant.audioTracks);
console.log(myParticipant.videoTracks);

但是当我尝试通过相同的方法foo.next().value 访问轨道的值时,我会收到一个空地图,如果我尝试Array.from() 方法,我会收到一个空数组。
发生了什么?!

【问题讨论】:

    标签: javascript arrays function multidimensional-array maps


    【解决方案1】:

    console.log() 将为您提供正在记录的对象的实时视图,因此如果是时间问题,那么当您查看控制台时,您正在记录的对象将已更新.

    因此,这种情况下的解决方案在于数据的填充方式。

    【讨论】:

    • 但是当我在我的代码中注销 myParticipant 时,我可以看到包含我需要的数据的 .tracks 地图。为什么我不能调用 Array.from(myParticipant.tracks.values) 并接收除空数组以外的其他内容?
    • myParticipant 的日志看起来像 tracks : Map(2) {"f469c8e5-4f94-4752-b018-af02d32fe448" => AudioTrack, "be6c2aa6-4c7c-4431-a964-a711f000562a" => VideoTrack}
      记录(在我的代码中)myParticipant.tracks 看起来像 Map(0) {} size:(...) __proto__:Map[[Entries]]:Array(2) 0:{"f469c8e5-4f94-4752-b018-af02d32fe448" => AudioTrack} 1:{"be6c2aa6-4c7c-4431-a964-a711f000562a" => VideoTrack} length:2
    • 你说这不是时间问题,但你又说如果你在开发工具中记录room.participants,你就会得到数据。那么您不是在您的代码有机会运行之后进行日志记录吗?如果是这样,那你为什么坚持认为它与时间无关?
    • 因为我很傻。事实证明,如果我稍后调用它,它会起作用。我不明白为什么我可以从脚本生成的日志中“看到”我需要的值,但直到以后才能访问它们,但事实就是如此。我已接受您的回答,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多