无法迭代Javascript对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法迭代Javascript对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2279字,纯文字阅读大概需要4分钟。
内容图文
![无法迭代Javascript对象](/upload/InfoBanner/zyjiaocheng/754/bf2220fa43cb49e09b89c4f9ba544912.jpg)
我一直遇到访问JS对象中的数据的问题.收集数据的代码(来自Firebase数据库)如下:
var get_user_data = function() {
...
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
console.log(key, value);
});
store_user_char(user_char);
}
var store_user_char = function(user_char) {
char_obj = user_char;
console.log(char_obj);
for(var key in char_obj){
if(char_obj.hasOwnProperty(key)){
console.log(key);
}
}
哪个(理论上)应该从Firebase数据库创建JS对象,当它将数据写入user_char时,它会将每个键:对象对打印到控制台中.之后,当store_user_char()执行时,它还应打印出之前的每个键.
第一个console.log()在写入user_char时成功输出每个键:对象对.第二个console.log()成功输出对象,我甚至可以单击并编辑其中的所有元素,在Firefox控制台中如下所示:
但是第三个console.log()永远不会执行,并试图通过访问如下所示的键从char_obj获取任何数据:
char_obj['KSxpjEvkCOL6ugGkxqn']
什么都不做,返回undefined.奇怪的是,在Firefox中手动单击对象允许我解析每个子元素,因此我知道数据存储在某处.
我唯一能想到的是来自数据库的请求可能需要很长时间来返回数据,但即使这样,store_user_char()函数也应该在数据存储到user_char之后执行,所以我非常困惑为什么我的代码似乎无法遍历对象.
我觉得好像我遗漏了一些关于JS对象的东西,这就是为什么我的代码无法找到数据的原因,但是我一直在试图找出最新情况,以及如何访问数据.
任何有关此事的帮助将不胜感激!
编辑:get_user_data的完全def如下:
// Global variables
var user_email;
var user_char = {};
var uid;
var get_user_data = function() {
// Authenticate current user
var user = firebase.auth().currentUser;
// Get User Email and char list
if (user != null) {
user_email = user.email;
uid = firebase.auth().currentUser.uid;
var getChar = firebase.database().ref('/users/' + uid + '/chars/').orderByKey();
getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
});
store_user_char(user_char);
}
}
解决方法:
getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
});
将异步调用,put函数调用store_user_char(user_char);在getChar内部回调,你的问题将得到解决.
喜欢:
getChar.on('value', function(snapshot){
snapshot.forEach(function(child){
var key = child.key;
var value = child.val();
user_char[key] = value;
});
store_user_char(user_char);
});
内容总结
以上是互联网集市为您收集整理的无法迭代Javascript对象全部内容,希望文章能够帮你解决无法迭代Javascript对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。