我只是尝试执行简单的firebase数据检索。这就是我所拥有的
var fb = new Firebase("https://<my-app>.firebaseio.com");
fb.on('value', function(snapshot) {
var db = snapshot.val();
var speed = db['speed'];
});
console.log(speed);
rnd = Math.floor( Math.random() * 7 );
fb.set({ speed: rnd});
我遇到的问题是速度卡在fb.on区域内。我怎么把它拿出来?
答案 0 :(得分:3)
您的代码没有卡住,您的调用不正确。
fb.on('value', function(snapshot) {
var db = snapshot.val();
var speed = db['speed'];
});
这里提供一个带有局部变量speed
的回调函数。这个变量可能设置正确,但你没有做任何事情。
console.log(speed);
rnd = Math.floor( Math.random() * 7 );
fb.set({ speed: rnd});
此代码在您设置事件处理程序(fb.on( 'value', ... )
)后直接运行,但该代码以异步方式运行。此函数不仅可能不会在此时运行,而且在这里您正在访问未声明的变量speed
,并且因为它未被声明它是一个自动全局变量window.speed
,而不是本地回调函数中的变量speed
。
移动回调函数内部的console.log
以在正确的时间执行它。此外,始终声明您的变量。