我想在下面提到的代码的最后一行获取power_level值的值,但它没有显示任何内容。我需要这个值来进一步使用该做什么。
var config = {
//
};
firebase.initializeApp(config);
var database = firebase.database();
var ref = database.ref("power");
ref.on("value", gotData, errData);
var power_level;
function gotData(data) {
var power = data.val();
// Grab the keys to iterate over the object
var keys = Object.keys(power);
console.log(keys);
for (var i = keys.length - 1; i < keys.length; i++) {
var key = keys[i];
// Look at each fruit object!
var power_level = power[key];
console.log(power_level);
}
}
console.log(power_level);
答案 0 :(得分:0)
你没有在最后一行获得值的原因是因为它是异步的。基本上你执行ref.on
并运行gotData()
函数if(更重要的是WHEN)它成功,但无论console.log()
是否完成,你的最后gotData()
都会运行。< / p>
一种简单的方法是通过定义一个单独的函数,该函数将power_level作为参数并处理power_level,并在gotData()
的末尾运行。
这样的事情:
var config = {
//
};
firebase.initializeApp(config);
var database = firebase.database();
var ref = database.ref("power");
ref.on("value", gotData, errData);
var power_level;
function gotData(data) {
var power = data.val();
// Grab the keys to iterate over the object
var keys = Object.keys(power);
console.log(keys);
for (var i = keys.length-1; i < keys.length; i++) {
var key = keys[i];
// Look at each fruit object!
var power_level = power[key];
console.log(power_level);
////////// call handlePowerlevel here to handle logic further
handlePowerlevel(power_level)
}
}
function handlePowerlevel(pl) {
console.log(pl);
// actual logic
}